我有一个如下所示的数据集
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。
答案 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