我有一个如下所示的数据框:
df <- data.frame(H0=c(35.4, NA, 36.0, 36.4), H1=c(32.3, 32.0, 34.3, 33.5),
H2=c(33.4, 31.5, 33, 34.2), H3=c(32.9, 33.0, 34.0, 33.0),
H4=c(32.8, NA, 34.5, 33.2))
我需要一个函数来搜索每一行并返回首先满足条件的列的列索引(而不是名称),此处的值 <= 33.0。
NA
被忽略,所以我期望:
[1] 2 2 3 4
最佳答案
您的问题没有说明您希望如何处理 NA
或没有 < 33 的行。max.col
可能足以满足你的任务:
R>df
H0 H1 H2 H3 H4
1 35.4 32.3 33.4 32.9 32.8
2 NA 32.0 31.5 33.0 NA
3 36.0 34.3 33.0 34.0 34.5
4 36.4 33.5 34.2 33.0 33.2
R>max.col(df <= 33, ties.method="first")
[1] 2 NA 3 4
编辑:要处理 NA
,将它们替换为 Inf
应该可以解决问题:
R>max.col( `[<-`(df, is.na(df), value=Inf) <= 33, ties.method="first")
[1] 2 2 3 4
关于r - 对于每一行,如果/当首先满足条件时获取列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961301/