arrays - 与不同 ID 关联的查找和求和值

标签 arrays r dataframe lookup data-manipulation

我有一个文件,其中包含与 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/

相关文章:

java - 数组循环性能中哪一个更快?

javascript - 项目具有值(value),但在 Uint8Array 中返回 'undefined'

mysql - cakephp 用于多个连接和聚合函数的结果集...即复杂查询

scala - Spark 数据帧中的序列

c# - 使用 LINQ 将一行变成两个对象?

r - 计算单个列中值的连续出现

r - y中的错误-ymean : non-numeric argument to binary operator randomForest R

r - dplyr ifelse 语句中的嵌套条件

Pandas 从重采样中检索添加行的索引

r - 从两个数据框中的数据生成多个序列图/散点图