gpt4 book ai didi

R根据条件返回列名

转载 作者:行者123 更新时间:2023-12-01 22:18:13 25 4
gpt4 key购买 nike

对于以下数据框:

DF <- data.frame(Row=c(1,2,3,4,5),`2.04`=c(1,1,0,1,1),`2.05`=c(0,0,0,0,1),
`2.06`=c(1,0,0,0,1),`2.07`=c(1,0,0,0,1),`2.08`=c(1,1,1,0,0), check.names = F)

我想为每一行返回一个新的向量,列名同时具有 (a) 相关行中大于 0 的值; (b) 列名在所有满足条件 a 的列中具有最高值,这样:

DF <- data.frame(Row=c(1,2,3,4,5),'2.04'=c(1,1,0,0,1),'2.05'=c(0,0,0,0,1),
'2.06'=c(1,0,0,0,1),'2.07'=c(1,0,0,1,1),'2.08'=c(1,1,1,0,0),
Results=c(2.08,2.08,2.08,2.04,2.07)

因此对于第 2 行,列 2.04 和 2.08 满足条件 (a),只有 2.08 满足条件 (b),因为 2.08>2.04。

dplyrdata.table 是首选。

最佳答案

你也可以像这样使用max.col

DF$results <- names(DF[-1])[max.col(DF[-1], "last")]
DF
Row 2.04 2.05 2.06 2.07 2.08 results
1 1 1 0 1 1 1 2.08
2 2 1 0 0 0 1 2.08
3 3 0 0 0 0 1 2.08
4 4 1 0 0 0 0 2.04
5 5 1 1 1 1 0 2.07

max.col 返回每行最大值的列位置。它采用第二个参数 ties.method,此处设置为“last”,以便返回每行的最大列位置。这些列位置用于使用 [ 提取列名,然后将其转换为数字并放入向量中。

关于R根据条件返回列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374599/

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