首页 > 解决方案 > 将数据分散到新列中,同时汇总(添加)值 - R 或 SQL

问题描述

我有一个看起来像这样的表:

ID    YEAR    SOURCE    VALUE
 1    2014        AV       15
 1    2014        OV       25
 1    2015        AV       87
 2    2014        AX       44
 2    2015        AZ       32
 2    2015        NL        2
 3    2011        OV      104

我想重新构建表以提供一个新列,其中汇总了源 AV、AX 和 NL 提供的值,以及另一个新列,其中给出了来自 OV 的值。例如,上面看起来像这样:

ID    YEAR    AV+AX+NL    OV
 1    2014          15    25
 1    2015          87    NA
 2    2014          44    NA
 2    2015          32    NA
 3    2011          NA   104

我想在 R 中执行此操作,但如果更简单,可以使用 SQL。到目前为止,我一直在尝试结合 tidyverse 中的“summarise”和“mutate”命令来创建我的新列,但我无法找到一种方法来仅对某些 SOURCE 值而不是所有值求和。

非常感谢任何帮助

标签: rsql-serverdplyr

解决方案


一种选择dcast来自data.table

library(data.table)
dcast(setDT(df1), ID + YEAR ~ SOURCE %in% c("AV", "AX", "NL"),
                value.var = "VALUE", sum)

推荐阅读