2

我有一个具有以下结构的数据库:

ID <- c(1,2,3,4,4,5,6,7,7,8)
Var1 <- c(1,2,1,2,4,1,2,3,5,4)
Var2 <- c(6,8,7,4,7,8,9,5,7,5)
df <- data.frame(cbind(ID,Var1,Var2))

数据框现在看起来像这样:

   ID Var1 Var2
1   1    1    6
2   2    2    8
3   3    1    7
4   4    2    4
5   4    4    7
6   5    1    8
7   6    2    9
8   7    3    5
9   7    5    7
10  8    4    5

我想用第二个重复 ID 中的 Var2 值替换第一个重复 ID 的 Var2 值(参见第 4:5 和 8:9 行),然后完全删除第二个重复 ID 的整行。最终的 df 如下所示:

  ID Var1 Var2
1  1    1    6
2  2    2    8
3  3    1    7
4  4    2    7
5  5    1    8
6  6    2    9
7  7    3    7
8  8    4    5
4

1 回答 1

1

这应该可以工作(注意 OP 并没有具体说明两个以上的重复,这将做的是它需要 firstVar1和 last Var2):

library(data.table)
dt = data.table(df)

dt[, list(Var1 = Var1[1], Var2 = Var2[.N]), by = ID]
#   ID Var1 Var2
#1:  1    1    6
#2:  2    2    8
#3:  3    1    7
#4:  4    2    7
#5:  5    1    8
#6:  6    2    9
#7:  7    3    7
#8:  8    4    5
于 2013-07-15T17:51:18.330 回答