我有一个文件,其中包含与 ID 的每个唯一值关联的 抑郁症 值。名为 HAVE 的数据框如下所示:
id depression friendid_A friendid_B friendid_C friendid_D
1 1.0 NA 3 6 5
2 0.6 6 4 NA NA
3 0.0 1 4 5 NA
4 1.8 1 3 NA 2
5 1.7 NA NA NA NA
6 0.3 2 3 NA NA
我想添加一个变量 depression_sum,用于查找观察中列出的每个 ID 的 depression 值,并将它们相加。例如,第一个观测值的各个 friendid_n 变量的 ID 为 3、6 和 5。这三个 ID 的抑郁值分别为 0.0、0.3 和 1.7。因此,该观察结果的 depression_sum 将为 2.0。
下面是我想要创建的名为WANT的数据框:
id depression friendid_A friendid_B friendid_C friendid_D depression_sum
1 1.0 NA 3 6 5 2.0
2 0.6 6 4 NA NA 2.1
3 0.0 1 4 5 NA 4.5
4 1.8 1 3 NA 2 1.6
5 1.7 NA NA NA NA NA
6 0.3 2 3 NA NA 0.6
有没有办法有效地查找这些值并创建一个包含它们总和的变量?
最佳答案
tidyverse
解决方案
library(tidyverse)
WANT <- HAVE %>%
gather(key, value, -id, -depression, na.rm = TRUE) %>%
group_by(id) %>%
summarize(
depression_sum = sum(HAVE$depression[match(value, HAVE$id)])
) %>%
left_join(HAVE, .)
关于arrays - 与不同 ID 关联的查找和求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033833/