在R中重新排列分组数据

时间:2014-08-28 19:35:22

标签: r dataframe

以Oats数据为例,我想获得以下结果:

library(nlme)

dframe <- data.frame( Block = rep("I", 3), Variety = names(table(Oats[Oats$Block == "I",            ]$Variety)), Freq = as.vector(table(Oats[Oats$Block == "I", ]$Variety)))

        Block     Variety      Freq
    1     I      Golden Rain    4
    2     I      Marvellous     4
    3     I      Victory        4
    ...

我想在燕麦数据中的所有其他块II到VI的上述结果。我希望在R中有一种更有效的方法,而不必为每个Block ID编写单独的代码。我已经阅读了一些帖子,但仍然没有找到解决方案。我也尝试过使用一些函数 - 聚合,表格等。

由于

1 个答案:

答案 0 :(得分:4)

您可以使用table

> ( a <- as.data.frame(with(Oats, table(Block, Variety))) )
> a[order(a$Block, decreasing = TRUE), ]

plyr::count

> library(plyr)
> count(Oats, vars = c("Block", "Variety"))

我第一次data.table回答...... 我认为您可以执行以下操作,之后不需要重新订购。

> library(data.table)
> setDT(Oats)[, .N, by = list(Block, Variety)]

data.table用户,如果错误,请纠正我。