r - 获取与值匹配的 data.table 列的索引

标签 r dplyr data.table

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/

相关文章:

r - 按某些列汇总单元格

r - 在 R 中编码高斯对数似然

r - 如何将可变数量的连接标签的列拆分为每个标签一列?

r - 每隔一行拆分变量以在 data.frame 中形成两个新列

r - 当用户定义的 R 函数不返回值时,为什么会发生这种情况?

r - 为什么 lapply() 不保留我的 data.table 键?

r - 在R markdown的pdf结果上添加 'DRAFT'水印

r - 查找向量元素中第一次变化的索引

r - 按组平均,删除当前行

r - 无法连接 data.table 结果来自 R 中的 foreach 循环