微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

汇总R中的频率表

如何解决汇总R中的频率表

我想按行和列汇总数据帧A,B和C,以获得D。

A <- data.frame(A = c("John","Fred","Paul"),Money = c(5,20,10),Hats = c(1,2,2))
B <- data.frame(A = c("John","Fred"),Money = c(15,2))
C <- data.frame(A = c("Paul"),Money = c(20),Hats = c(1))

D <- data.frame(A = c("John",Money = c(20,30,30),Hats = c(2,3,3))

这是R中最快的方法吗?

解决方法

您可以这样做:

aggregate(.~A,do.call(rbind,list(A,B,C)),sum)

     A Money Hats
1 Fred    30    4
2 John    20    2
3 Paul    30    3

或者简单地

aggregate(.~A,rbind(A,C),sum)

     A Money Hats
1 Fred    30    4
2 John    20    2
3 Paul    30    3
,

使用dplyr:

df_filtered <- tidyr::gather(your_df,value = Value,key = ColumnNames,dplyr::starts_with('X')) %>%
               dplyr::filter( ColumnNames == "X1" & Value == 5.2 |
                              ColumnNames == "X2" & Value == 6.3 |
                              ColumnNames == "X3" & Value == 7.1 )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。