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 値を 2 番目の重複 ID の Var2 値に置き換え (4:5 行と 8:9 行を参照)、2 番目の重複 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は2つ以上の重複について特定されていないことに注意してください。これが行うことは、 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 に答える