2 回答

TA貢獻1873條經(jīng)驗 獲得超9個贊
我不太確定你用過什么,但table對我來說效果很好!
這是一個可重復(fù)性最小的例子:
df <- structure(list(V1 = c("a", "a", "a", "b", "b", "b", "c"),
V2 = c("g", "h", "g", "i", "g", "h", "i")),
.Names = c("V1", "V2"), class = "data.frame",
row.names = c(NA, -7L))
table(df)
# V2
# V1 g h i
# a 2 1 0
# b 1 1 1
# c 0 0 1
筆記:
嘗試table(df[c(2, 1)])(或table(df$V2, df$V1))交換行和列。
使用as.data.frame.matrix(table(df))得到一個data.frame作為輸出。(as.data.frame將創(chuàng)建一個長的data.frame,而不是一個你想要的相同輸出格式)。

TA貢獻1795條經(jīng)驗 獲得超7個贊
使用f@Ananda你可以使用dcast
library(reshape2)
> dcast(f, V1~V2)
Using V2 as value column: use value.var to override.
Aggregation function missing: defaulting to length
V1 g h i
1 a 2 1 0
2 b 1 1 1
3 c 0 0 1
但是,我寫這篇文章只是為了以后你可能需要的不僅僅是table(在這種情況下,這是最簡單的正確答案),例如:
set.seed(1)
f$var <- rnorm(7)
> f
V1 V2 var
1 a g -0.6264538
2 a h 0.1836433
3 a g -0.8356286
4 b i 1.5952808
5 b g 0.3295078
6 b h -0.8204684
7 c i 0.4874291
> dcast(f, V1~V2, value.var="var", fun.aggregate=sum)
V1 g h i
1 a -1.4620824 0.1836433 0.0000000
2 b 0.3295078 -0.8204684 1.5952808
3 c 0.0000000 0.0000000 0.4874291
- 2 回答
- 0 關(guān)注
- 1848 瀏覽
添加回答
舉報