我试图根据它们所属的组( Types )对数据框的列值( variance )求和。由于只有三种“ 类型”(MRF,OH和SDH),因此应该有3个唯一值,但我只有1个唯一值( variance 的总和)。 我正在使用的数据框(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.
谢谢!
答案 0 :(得分:0)
问题是使用dat_joined[,4]
,它将提取整个第四列。请勿这样做,而应在mutate
中使用未加引号的列名,并且应遵循组结构来计算目标列的sum
library(dplyr)
dat_weighted <- dat_joined %>%
distinct(IndicatorName, AreaName, .keep_all = TRUE) %>%
group_by(Type)%>%
mutate(sum=sum(variance))