使用数据R

时间:2017-01-13 08:07:39

标签: r

我有一个包含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)

知道我怎么能这样做吗?

3 个答案:

答案 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)