找到最小数字的相应值 - r

时间:2015-05-10 13:49:39

标签: r data.table

我有一个数据框,我想在其中得到相应的值min值。

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和其他人,但他们没有提供正确的结果。 提前致谢。 埃里克

1 个答案:

答案 0 :(得分:4)

您可以在原始数据上使用.SD

setDT(df)
df[, .SD[which.min(X2)], by = X1]
#    X1  X2 X3 X4
# 1:  1 170 75  6
# 2:  2 160 67  9

或者您可以按X1X2排序并选择唯一的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