DT = data.table(
id = 1:5,
a = c(0,1,0,2,5),
b = c(1,0,2,4,4),
c = c(1,2,0,0,5))
# id a b c
# 1: 1 0 1 1
# 2: 2 1 0 2
# 3: 3 0 2 0
# 4: 4 2 4 0
# 5: 5 5 4 5
我想从左边找出第一列有 0 的列,并将列索引放在
idx
中.# id a b c idx
# 1: 1 0 1 1 2
# 2: 2 1 0 2 3
# 3: 3 0 2 0 2
# 4: 4 2 4 0 4
# 5: 5 5 4 5 NA
(非
data.table
解决方案,例如,也欢迎使用 dplyr
)
最佳答案
通过基础 R 的想法可以是,
replace(max.col(-DT[, -1] == 0, ties.method = 'first') + 1, rowSums(DT == 0) == 0, NA)
#or break it into two lines If you want,
i1 <- max.col(-DT[,-1] == 0, ties.method = 'first') + 1
replace(i1, rowSums(DT == 0) == 0, NA)
#[1] 2 3 2 4 NA
关于r - 获取与值匹配的 data.table 列的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58750129/