【发布时间】:2019-08-12 11:32:49
【问题描述】:
我有一个数据框,每个 ID 有多行。我想组合这些行以获得每个 ID 的 1 行,并组合可以是 number 或 NA 的各自值(我想忽略)。
我不确定我是否可以在这里使用 aggregate();一般来说,如果有一个不是NA 的值,我希望将列(V1-V4)中的每个 ID 值设置为一个数字。
输入:
ID V1 V2 V3 V4
1 04C 6 NA NA 9
2 04C NA 9 NA 9
3 0F0 NA 5 NA 4
4 0F0 NA NA 7 4
5 0F0 NA 5 7 NA
6 167 8 NA NA NA
7 167 8 10 5 NA
8 167 8 10 NA NA
9 167 8 NA 5 NA
10 2D7 3 3 NA 1
输出:
ID V1 V2 V3 V4
1 04C 6 9 NA 9
2 0F0 NA 5 7 4
3 167 8 10 5 NA
4 2D7 3 3 NA 1
我想出了一个解决方案,不幸的是它很慢,但至少它避免了创建一个小标题。
for(i in 2:nrow(df)) {
row0 <- df[i-1,1]
row1 <- df[i,1]
if (row0==row1) {
for(j in 2:5) {
if (is.na(df[i,j])) {
df[i,j] <- df[i-1,j]
}
}
df[i-1,1] <- "NA"
}
}
dfclean <- subset(df, V0!="NA")
【问题讨论】: