我必须在一列中找到最小值,然后根据该值在另一列中找到对应的值。
我的数据集是K,我的列名是X,Y:
> K
X Y
1 2 3
2 4 5
3 6 7
4 8 9
5 10 11
这些列具有这些值,我使用来找到Y列的最小值
apply(K[c(2)],2,min) # this gives me 3.
现在我必须将其与我觉得困难的X列相关。
我对R完全陌生,我仍在学习。另外,除了library(readr)
,我不知道其他任何库。
答案 0 :(得分:2)
假设您要获取X
中的条目,该条目与Y
的最小值位于同一行,则可以尝试:
# create example data.frame:
K <- data.frame(X = seq(2, 10, 2), Y = seq(3, 11, 2))
# find index of minimum entry in column Y:
idx <- match(min(K$Y), K$Y) # gives you the first entry of the minimum
idx2 <- which(min(K$Y) %in% K$Y) # gives you all indices of the minimum
# output the corresponding element (or elements) in column X:
K$X[idx]
K$X[idx2]
关于您问题的第二部分,Datacamp为R提供了一个免费的入门课程,其中涵盖了非常基础的内容。
答案 1 :(得分:0)
真正取决于您所说的“关系”。假设您要查找X小于Y行的最小值的所有行:
K[K$X<min(K$Y),]
将导致:
X Y
1 1 2
该命令是子命令,它要求给出X小于Y的整个列的最小值的任何行的所有列。
答案 2 :(得分:0)
不需要apply
。如果您知道只有一个Y值是最低的,或者您需要最低Y的第一条记录,则可以使用which.min
。否则请使用min
,因为它更可靠。在您的示例中,这并不重要,但是请在完整的data.frame上测试这两种方法,以查看是否存在差异。
K[K$Y == min(K$Y), ]
X Y
1 2 3
K[which.min(K$Y), ]
X Y
1 2 3
答案 3 :(得分:0)
我遇到了同样的问题,并且有一种“更整洁”的方法可以通过变异和过滤器做到这一点:
K %>% mutate(minY=min(Y)) %>% filter(Y=minY).
如果您需要每个组的最小记录,则也可以将其与group_by一起使用。