我有一个数据框,我想在其中获取相应的最小值。
library(data.table)
df <- data.frame(cbind(c(1,1,1,1,2,2,2,2),
c(180,170,180,190,160,170,170,180),
c(80,75,76,81,67,65,66,70),
c(5,6,7,8,9,5,6,7)
))
df_stat <- setDT(df)[, list(
min = min(X2)
), by = X1]
结果应该是这样的
df_stat <- data.frame(cbind(c(1,2),
c(170,160),
c(75,67),
c(6,9)
))
我尝试过which.min和其他人,但他们没有提供正确的结果。 提前致谢。 埃里克
最佳答案
您可以在原始数据上使用.SD
setDT(df)
df[, .SD[which.min(X2)], by = X1]
# X1 X2 X3 X4
# 1: 1 170 75 6
# 2: 2 160 67 9
或者您可以按 X1
和 X2
排序,并选择唯一的 X1
unique(setorder(df, X1, X2), by = "X1")
# X1 X2 X3 X4
# 1: 1 170 75 6
# 2: 2 160 67 9
或者使用 .I
创建索引,然后按其子集
indx <- df[, .I[which.min(X2)], by = X1]$V1
df[indx]
# X1 X2 X3 X4
# 1: 1 170 75 6
# 2: 2 160 67 9
关于r - 找到最小数的对应值 - r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152194/