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

标签 r

我的数据集包含四个数值变量 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/

相关文章:

r - 从数据框中嵌入的列表中获取虚拟 (T/F) 变量

r - 在 xtable(anova(...)) 中包含模型规范

r - Julia 中的向量列表比 R 慢?

r - 使用 R 中的 ggplot 2 将 y 轴线更改为 x = 0

r - 找到R中NA值最多的行

r - 我可以使用 R ggsurvplot 更改 Kaplan Meier 图中 surv.median.line 的颜色吗?

r - dplyr - mutate_each - 对 POSIXlt 的 colswise 强制失败

r - 删除那些没有指定年份值的行组

根据另一个数据框重命名多列中的记录

python - Pandas 中的 R lm 函数