gpt4 book ai didi

r - 从 R 中的最小值创建一个新变量

转载 作者:行者123 更新时间:2023-12-01 22:24:23 26 4
gpt4 key购买 nike

数据包含四个字段:id, x1, x2, and x3

id <- c(1,2,3,4,5,6,7,8,9,10)
x1 <- c(2,4,5,3,6,4,3,6,7,7)
x2 <- c(0,1,2,6,7,6,0,8,2,2)
x3 <- c(5,3,4,5,8,3,4,2,5,6)

DF <- data.frame(id, x1,x2,x3)

在我问这个问题之前,让我创建一个新字段 (minX),它是 (x1,x2,x3) 的最小值

DF$minX <- pmin(DF$x1, DF$x2, DF$x3)

我需要创建一个新字段y,其定义如下

if min(x1,x2,x3) = x1, then y = "x1"
if min(x1,x2,x3) = x2, then y = "x2"
if min(x1,x2,x3) = x3, then y = "x3"

注意:我们假设没有联系。

最佳答案

作为一个简单的解决方案,做:

VARS <- colnames(DF)[-1]
y <- VARS[apply(DF[, -1], MARGIN = 1, FUN = which.min)]
DF$y <- y

函数 which.min 返回最小值的索引。如果最小值不唯一,则返回第一个。由于您保证没有平局,因此这不是问题。

最后,你应该对apply很熟悉了吧? MARGIN = 1 表示按行应用函数 FUN,而 MARGIN = 2 表示按列应用 FUN。这是一个有用的函数,可以避免在处理矩阵时需要 for 循环。由于您的数据框仅包含数字/整数值,因此它就像一个矩阵,因此我们可以使用 apply

关于r - 从 R 中的最小值创建一个新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com