【发布时间】:2019-03-31 16:56:16
【问题描述】:
我正在尝试根据数据框所属的组(类型)总结数据框列的值(方差)。由于只有三个“类型”(MRF、OH 和 SDH),应该有 3 个唯一值,但我只得到 1 个唯一值(方差的总和 )。 我使用的数据框(dat_joined)如下:
IndicatorID AreaName standardised variance Type
10401 Hartlepool 0.601 13478. MRF
13333 Middlesbrough 0.481 10000. MRF
我已经运行了这段代码,这似乎忽略了我按类型分组的事实。
dat_weighted <- dat_joined %>%
distinct(IndicatorName, AreaName, .keep_all = TRUE) %>%
group_by(Type)%>%
mutate(sum=sum(dat_joined[,4]))
结果,我得到了这个(简化的df):
IndicatorID AreaName standardised variance Type sum
10401 Hartlepool 0.601 13478. MRF 25037
13333 Middlesbrough 0.481 10000. MRF 25037
... ... ... ... ... ...
95555 Barnsley 0.601 14. HO 25037
96666 Oxford 0.481 1. HO 25037
... ... ... ... ... ...
93347 Staffordshire 0.250 71.0 SDH 25037
11401 Southend 0.310 80.1 SDH 25037
然而,我希望每个总和得到不同的结果,如下所示:
IndicatorID AreaName standardised variance Type sum
10401 Hartlepool 0.601 13478. MRF 25000
13333 Middlesbrough 0.481 10000. MRF 25000
... ... ... ... ... ...
95555 Barnsley 0.601 14. HO 17.
96666 Oxford 0.481 1. HO 17.
... ... ... ... ... ...
93347 Staffordshire 0.250 71.0 SDH 20.
11401 Southend 0.310 80.1 SDH 20.
谢谢!
【问题讨论】:
-
我认为您需要指定不带引号的列名而不是
dat[,5]BTW,dat是什么?使用dat[,5],它不会保留分组信息,而是从数据集中提取整列 -
dat[,5] 打错了,我把它改成了 dat_joined[,5]
-
从帖子来看,第5列好像是
Type,是一个字符列。如果您需要“方差”总和,请使用%>% mutate(sum = sum(variance)) -
是的,这也是一个错字,对不起!
-
@akrun 谢谢,解决了!
标签: r group-by sum aggregate dplyr