gpt4 book ai didi

r - 每行的最大值数量及更多

转载 作者:行者123 更新时间:2023-12-04 11:37:29 26 4
gpt4 key购买 nike

我的数据集包含四个数值变量 X1、X2、X3、X_4 和一个 ID 列。

ID <- c(1,2,3,4,5,6,7,8,9,10)
X1 <- c(3,1,1,1,2,1,2,1,3,4)
X2 <- c(1,2,1,3,2,2,4,1,2,4)
X3 <- c(1,1,1,3,2,3,3,2,1,4)
X4 <- c(1,4,1,1,1,4,3,1,4,4)
Mydata <- data.frame(ID, X1,X2,X3,X4)

我需要再创建两列:1) Max,和 2) Var

1)最大列:对于只有一个最大值的每一行,我需要将此“最大”值保存在 Max 变量中。如果
行有多个,则最大值应为 999。

2)Var列:对于只有一个最大值的行,我需要知道它是X1、X2、X3$还是X4。

对于上述数据集,输出如下:
ID  X1  X2  X3  X4  Max Var
1 3 1 1 1 3 X1
2 1 2 1 4 4 X4
3 1 1 1 1 999 NA
4 1 3 3 1 999 NA
5 2 2 2 1 999 NA
6 1 2 3 4 4 X4
7 2 4 3 3 4 X2
8 1 1 2 1 2 X3
9 3 2 1 4 4 X4
10 4 4 4 4 999 NA

最佳答案

我们可以使用 max.col 获取每行中最大值的“Mydata”的列名(不包括“ID”列)。 ('Var'),以及每行的最大值 pmax ('最大限度')。为具有多个最大值 ('indx') 的行创建一个逻辑索引,并将其与 ifelse 一起使用以获得预期的输出。

Var <- names(Mydata[-1])[max.col(Mydata[-1])]
Max <- do.call(pmax,Mydata[-1])
indx <- rowSums(Mydata[-1]==Max)>1

transform(Mydata, Var= ifelse(indx, NA, Var), Max=ifelse(indx, 999, Max))

关于r - 每行的最大值数量及更多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683339/

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