在一个数据集中按ID合并/合并三个变量

时间:2018-08-01 17:23:24

标签: r merge dataset

我有一个数据集,其中包含五个变量:ID,A,B,C,D。某些ID重复不止一个,因此它使我的数据集比原本应的大(n = 3600)。现在,我有类似(表1)的内容,并且我想看到(表2)的内容:

enter image description here

因此,基本上,将变量A,B,C的答案通过其ID组合为一个,并且每个ID仅排成一行(就像ID2一样)。

此外,对于变量D,我希望有一个逻辑响应,就像ID2一样。一旦ID2的变量(A,B,C)组合在一起,如果这些变量中的任何一个对变量D都有“参加”响应,那么对于ID,总的来说,它应该是“参加”。

我很抱歉,我的问题太简单了,我尝试从其他人的问题中查找,并用谷歌搜索,但是大多数答复是将两个数据集通过其ID合并为一个。我希望得到您的想法,并在此先感谢您!任何帮助/想法表示赞赏!

您, G

1 个答案:

答案 0 :(得分:0)

您没有提供可供使用的示例,因此:

> 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