按ID合并行

时间:2019-05-29 14:34:29

标签: r

我有一个很大的数据集,我想将具有相同ID的行合并为一行,而不会丢失任何信息。

首先,这是我的长数据:

 # A random data frame
    df1  <- read.table(text="question ID  ARG  AUT ITA
                              A     90   NA  all   never
                              A     90   NA  all   NA
                              A1    91   12  NA    NA
                              A2    92   14  two   41
                              A3    93   17  NA    44
                              AA    90   20  NA    NA
                              B2    91   NA  NA    NA
                              B3    92   NA  four  NA
                              B4    93   NA  10    yes", header=TRUE, stringsAsFactors=FALSE)

这是我想要实现的:

# A random data frame
    df1  <- read.table(text="question ID  ARG  AUT ITA
                              A     90   20  all   never
                              A1    91   12  13    61
                              A2    92   14  two   41
                              A3    93   17  10    yes ", header=TRUE, stringsAsFactors=FALSE)

请注意,我的实际数据集具有较宽的格式,并且比上面的示例中包含更多的变量/列。

我在考虑aggregate()函数,但是我不知道如何实现它,因为我的字符值需要“聚合”。对于如何解决此问题的任何建议,我将不胜感激!

1 个答案:

答案 0 :(得分:1)

一个选项是

library(dplyr)
df1 %>%
   group_by(ID) %>%
   summarise_all(list(~ .[!is.na(.)][1]))