我将尝试用一个例子解释我的问题。
df <- data.frame(VIN=paste("vin", c(1:6,2), sep = ""),
KM=c(15, 48, 545, 544, 874, 6523, 1422))
我想清理我的data.frame
,并且只保留VIN列中的唯一元素,在我的示例中我复制了“vin2”,因此要在两者之间进行选择,我会将VIN与较小的KM一起使用。这是第二行。
我该怎么做?
答案 0 :(得分:2)
以下两个选项需要考虑。
第一个使用rank
:
df[with(df, ave(KM, VIN, FUN = rank)) == 1, ]
# VIN KM
# 1 vin1 15
# 2 vin2 48
# 3 vin3 545
# 4 vin4 544
# 5 vin5 874
# 6 vin6 6523
第二个取决于order
和`重复(并且看起来更直观,以某种方式,但需要您在继续之前对数据进行排序)。
X <- df[with(df, order(VIN, KM)), ]
X[!duplicated(X$VIN), ]
# VIN KM
# 1 vin1 15
# 2 vin2 48
# 3 vin3 545
# 4 vin4 544
# 5 vin5 874
# 6 vin6 6523