HS汇总数据帧中在R中具有相同属性的行

问题描述 投票:0回答:1

我希望这个问题不会经常被问到(第一次用户)。

我有一个名为data2003的数据框,为简单起见,我会说它看起来像这样:

ID   Weight   North   South
1    0.5      1       0
2    0.7      0       1
3    1.0      0       1
4    1.4      0       1
5    .95      1       0
6    1.1      1       0

我想在权数列中添加与北和南虚拟变量相对应的值,因此,当同一行的北值是1时,仅在计数中包括权重。

我所做的是为北方和南方制作子集:

subset2003N <- subset(data2003, data2003$North == 1 )
sum2003N <-sum(subset2003N$Weight)

问题是我有6个区域,而不仅仅是北部和南部,还有另外两年的数据集。有没有一种方法可以在一行代码中简单地做到这一点,而又不会使我的全局环境充满这么多子集?

r
1个回答
0
投票

如果NorthSouth是互斥的,则最好将它们作为一列。您可以在这里使用reshape2和dplyr帮助您:

library(reshape2)
library(dplyr)

melt(data2003, c("ID", "Weight")) %>% 
  filter(value == 1) %>% 
  group_by(variable) %>% 
  summarize(Weight = sum(Weight))
#> # A tibble: 2 x 2
#>   variable Weight
#>   <fct>     <dbl>
#> 1 North      2.55
#> 2 South      3.10
© www.soinside.com 2019 - 2024. All rights reserved.