R 根据某些条件删除重复的id
我们将“data.frame”转换为“data.table”(R 根据某些条件删除重复的id,r,duplicates,R,Duplicates,我们将“data.frame”转换为“data.table”(setDT(df)),按“id”分组,得到“age”与11的差值,找到最小绝对值(which.min(abs..)的索引,并对数据集进行子集(.SD) 编辑:@Pascal刚刚通知我们距离已经在“ageto11”中计算出来了。在这种情况下 library(data.table) setDT(df)[,.SD[which.min(abs(age-11))] , id] # id age ageto11 #1: 1 10.6
setDT(df)
),按“id”分组,得到“age”与11的差值,找到最小绝对值(which.min(abs..
)的索引,并对数据集进行子集(.SD
)
编辑:@Pascal刚刚通知我们距离已经在“ageto11”中计算出来了。在这种情况下
library(data.table)
setDT(df)[,.SD[which.min(abs(age-11))] , id]
# id age ageto11
#1: 1 10.6 0.4
#2: 2 11.0 0.0
#3: 3 11.3 0.3
#4: 4 10.9 0.1
#5: 5 10.7 0.3
#6: 6 11.0 0.0
#7: 7 11.1 0.1
#8: 8 10.3 0.7
#9: 9 10.7 0.3
id age ageto11
2 1 10.6 0.4
3 2 11.0 0.0
4 3 11.3 0.3
5 4 10.9 0.1
7 5 10.7 0.3
8 6 11.0 0.0
10 7 11.1 0.1
12 8 10.3 0.7
13 9 10.7 0.3
library(data.table)
setDT(df)[,.SD[which.min(abs(age-11))] , id]
# id age ageto11
#1: 1 10.6 0.4
#2: 2 11.0 0.0
#3: 3 11.3 0.3
#4: 4 10.9 0.1
#5: 5 10.7 0.3
#6: 6 11.0 0.0
#7: 7 11.1 0.1
#8: 8 10.3 0.7
#9: 9 10.7 0.3
setDT(df)[, .SD[which.min(ageto11)], id]