【问题标题】:Merge/combine three variables by ID in one dataset在一个数据集中按 ID 合并/组合三个变量
【发布时间】:2019-01-09 08:42:34
【问题描述】:

我有一个数据集,其中包含五个变量:ID、A、B、C、D。一些 ID 重复不止一个,因此它使我的数据集比预期的大 (n=3600)。现在我有类似(表1)的东西,我想看看(表2):

因此,基本上,将变量 A、B、C 的答案按其 ID 组合为一个,并且每个 ID 只制作一行(如 ID2 的情况)。

另外,对于变量 D,我想要一个逻辑响应,就像 ID2 的情况一样。一旦 ID2 的变量(A、B、C)组合起来,如果这些变量中的任何一个对变量 D 有“参与”响应,那么总体而言,对于 ID,它应该是“参与”。

如果我的问题太简单了,我深表歉意,我尝试从其他人的问题中查找并谷歌搜索,但大多数回复是通过他们的 ID 将两个数据集合并为一个。我希望得到您的想法,并提前非常感谢您!任何帮助/想法表示赞赏!

你的, G

【问题讨论】:

    标签: r merge dataset


    【解决方案1】:

    你没有提供一个可以使用的例子,所以:

    > Table1
    ## A tibble: 5 x 5
    #     ID A     B     C     D           
    #  <int> <chr> <chr> <chr> <chr>       
    #1     1 yes   <NA>  yes   Not Attended
    #2     2 yes   <NA>  <NA>  Not Attended
    #3     2 <NA>  yes   <NA>  Not Attended
    #4     2 <NA>  <NA>  yes   Not Attended
    #5     3 yes   <NA>  <NA>  Not Attended
    

    您可以使用 tidyverse:

    Table1 %>% gather(k,v,-ID) %>% filter(!is.na(v)) %>% distinct %>% spread(k,v)
    

    得到:

    ## A tibble: 3 x 5
    #     ID A     B     C     D           
    #  <int> <chr> <chr> <chr> <chr>       
    #1     1 yes   <NA>  yes   Not Attended
    #2     2 yes   yes   yes   Not Attended
    #3     3 yes   <NA>  <NA>  Not Attended
    

    【讨论】:

    • 尼古拉斯,感谢您的回复。我试图简化我的问题并提供一个包含变量 A、B、C 的示例,但我的数据集包含 3600 多个观察值,因此很难将它们全部放在一起。无论如何,我确实使用 packagegaes dplyr 和 tidyr 复制了您的代码,但我收到了一个错误:错误:行的标识符重复(3347、3632)等。此外:警告消息:属性在度量变量中不相同;他们将被丢弃
    • @MS G 我在写答案时看到了问题:如果您有两行具有相同的 ID 和相同的变量填充,它不起作用。您有两个选择:要么保留最后一次出现(group_by 会有所帮助),要么有某种偏好(因素将与 group_by 一起帮助):我无法为您做出决定。请提供一个小摘录,其中包含相同的重复答案ID 并显示列的类别。并请提供预期结果。按照 SO 中的建议,请为此使用 dput(不是屏幕截图)。
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 2017-01-08
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    相关资源
    最近更新 更多