基于R中另一列的值的一列的值

问题描述 投票:1回答:4

我必须在一列中找到值最小值,并且基于该值,我必须找到另一列中对应的值。

我的数据集是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)之外的任何其他库。

r
4个回答
3
投票

假设您想要获取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
投票

不需要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

0
投票

真的取决于你所说的“关联”。假设您要查找X小于Y行最小值的所有行:

 K[K$X<min(K$Y),]

将导致:

  X Y
1 1 2

该命令是一个子集命令,它要求给出任何行的所有列,其中X小于整个Y列的最小值。


0
投票

我遇到了同样的问题,并且使用mutate和filter有一个“更整洁”的方法:

    K %>% mutate(minY=min(Y)) %>% filter(Y=minY).

如果您需要每个组的最小记录,这也可以与group_by一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.