我有一个包含2个组和值的数据框,我希望有一个带有值的双向表,但是使用函数“table”我只将出现次数作为值。 示例:
我有一个这样的数据框:
GroupA GroupB Value
A1 B1 4
A1 B2 3
A2 B1 2
A1 B1 3
我想要一张这样的桌子:
A1 A2
B1 7 2
B2 3 0
(由于A2 B2没有数据,因此为0)
知道我怎么能这样做吗?
答案 0 :(得分:4)
我们可以将xtabs
用于此
xtabs(Value~GroupB + GroupA, df)
# GroupA
#GroupB A1 A2
# B1 7 2
# B2 3 0
答案 1 :(得分:1)
使用dplyr-tidyr
,
library(dplyr)
library(tidyr)
df %>%
group_by(GroupA, GroupB) %>%
summarise(Value=sum(Value)) %>%
spread(GroupA, Value, fill=0)
# GroupB A1 A2
# (fctr) (dbl) (dbl)
# 1 B1 7 2
# 2 B2 3 0
答案 2 :(得分:0)
我们可以使用acast
reshape2
library(reshape2)
acast(df1, GroupB~GroupA, sum)
# A1 A2
#B1 7 2
#B2 3 0
或base R
选项为tapply
tapply(df1$Value, df1[2:1], sum)