将数据集转换为聚合值

时间:2015-11-27 04:38:54

标签: r

我有一个如下所示的数据集

Col  Value
  A      1
  A      0
  A      1
  A      1
  A      1
  B      0
  B      1
  B      0
  B      1
  B      1

如何对其进行转换,使其如下所示

Col1  Col2  Col3
   A     4     1
   B     3     2

Col2计算所有1,Col3计算Col1中每个因子值的所有0。

3 个答案:

答案 0 :(得分:2)

为此,您可以使用table

table(mydf)
##    Value
## Col 0 1
##   A 1 4
##   B 2 3

或者:

library(data.table)
as.data.table(mydf)[, as.list(table(Value)), by = Col]
##    Col 0 1
## 1:   A 1 4
## 2:   B 2 3

答案 1 :(得分:2)

或者我们可以使用dcast

library(reshape2)
dcast(df1, Col~Value, value.var='Value', length)

答案 2 :(得分:0)

汇总值的另一种方法是:

df <- data.frame(Col=c("A","A","A","A","A","B","B","B","B","B"), Value=c(1,0,1,1,1,0,1,0,1,1))

new_df <- as.data.frame(with(df, tapply(Value, list(Col, Value), FUN = function(x) length(x))))

new_df <- setNames(cbind(rownames(new_df), new_df), c("Col1","Col2","Col3"))

new_df 

     Col1 Col2 Col3
 A    A    1    4
 B    B    2    3

如果不希望看到它们,我们可以将rownames设置为NULL:

rownames(new_df) <- NULL

结果:

   Col1 Col2 Col3
1    A    1    4
2    B    2    3