我有一个很大的数据集,我想将具有相同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()
函数,但是我不知道如何实现它,因为我的字符值需要“聚合”。对于如何解决此问题的任何建议,我将不胜感激!
答案 0 :(得分:1)
一个选项是
library(dplyr)
df1 %>%
group_by(ID) %>%
summarise_all(list(~ .[!is.na(.)][1]))