我有这个数据框

id <- c(1,1,1,2,2,3)
name <- c("A","A","A","B","B","C")
value <- c(7:12)
df<- data.frame(id=id, name=name, value=value)
df


此函数从中选择一个随机行:

randomRows = function(df,n){
  return(df[sample(nrow(df),n),])
}




randomRows(df,1)


但是我想随机选择每个“名称”(或每个“ id”相同)的一行,并将整行连接到一个新表中,因此在本例中为三行。这必须遍历2000+行数据帧。请告诉我如何?!

最佳答案

我认为您可以使用plyr包来做到这一点:

library("plyr")
ddply(df,.(name),randomRows,1)


例如:

  id name value
1  1    A     8
2  2    B    11
3  3    C    12


这是你想要的?

08-04 13:00
查看更多