中执行此操作
我已经使用了data.table功能来找出" y"的最小值" x",如下所示。
> x <- c("A", "B", "A", "C", "B", "A")
> y <- c(0, 1, 1, 1, 2, 2)
> z <- c(1, 2, 1, 4, 5, 3)
> df <- data.table(x, y, z)
> temp <- df[, .(M=min(y)), by="x"]
> temp
x M
1: A 0
2: B 1
3: C 1
> df
x y z
1: A 0 1
2: B 1 2
3: A 1 1
4: C 1 4
5: B 2 5
6: A 2 3
但是,现在发现最小值后,我希望能够为每个" x"s。
的" z"的相应值拔出简而言之,我希望温度像:
> temp
x M z
1: A 0 1
2: B 1 2
3: C 1 4
我该如何在r?
我们可以使用.I
单步执行此操作,以提取逻辑向量的行索引,并根据该
df[df[, .I[y==min(y)], by = x]$V1]
# x y z
#1: A 0 1
#2: B 1 2
#3: C 1 4
或其他选项是
df[order(x,y)][!duplicated(x)]
如果我们想基于"临时"获取输出,请使用join
df[temp, on =.(x, y=M)]
# x y z
#1: A 0 1
#2: B 1 2
#3: C 1 4