r - 根据特定列中的数据框条目添加新列的最快方法是什么

所以我有这个数据框

#   Name Comp1 Con2 Vis3 Tra4 Pred5 Adap6
# 1   A1     x <NA> <NA> <NA>  <NA>  <NA>
# 2   A2  <NA>    x <NA> <NA>  <NA>  <NA>
# 3   B1  <NA> <NA>    x <NA>  <NA>  <NA>
# 4   B2  <NA> <NA> <NA> <NA>     x  <NA>
# 5   B3  <NA> <NA> <NA>    x  <NA>  <NA>
# 6   D2  <NA> <NA> <NA> <NA>  <NA>     x
# 7   F6  <NA> <NA> <NA> <NA>     x  <NA>

我想向数据后端添加一列,根据“x”在数据后端上的哪一列显示从 1 到 6 的值。所以附加列看起来像这样

#   Name Comp1 Con2 Vis3 Tra4 Pred5 Adap6 stage
# 1   A1     x <NA> <NA> <NA>  <NA>  <NA>     1
# 2   A2  <NA>    x <NA> <NA>  <NA>  <NA>     2
# 3   B1  <NA> <NA>    x <NA>  <NA>  <NA>     3
# 4   B2  <NA> <NA> <NA> <NA>     x  <NA>     5
# 5   B3  <NA> <NA> <NA>    x  <NA>  <NA>     4
# 6   D2  <NA> <NA> <NA> <NA>  <NA>     x     6
# 7   F6  <NA> <NA> <NA> <NA>     x  <NA>     5

由于我的数据框在原始脚本中非常大,我正在寻找最快(自动)的方法来执行此操作。我试过使用 for 循环,但它花费的时间太长。

数据

databackend <- structure(list(Name = c("A1", "A2", "B1", "B2", "B3", "D2", "F6"
), Comp1 = c("x", NA, NA, NA, NA, NA, NA), Con2 = c(NA, "x", 
NA, NA, NA, NA, NA), Vis3 = c(NA, NA, "x", NA, NA, NA, NA), Tra4 = c(NA, 
NA, NA, NA, "x", NA, NA), Pred5 = c(NA, NA, NA, "x", NA, NA, 
"x"), Adap6 = c(NA, NA, NA, NA, NA, "x", NA), stage = c(1, 2, 
3, 5, 4, 6, 5)), row.names = c(NA, -7L), class = "data.frame")

最佳答案

你可以这样做(假设在你的例子中每一行都有一个“x”):

max.col(!is.na(databackend[-1]))

[1] 1 2 3 5 4 6 5

https://stackoverflow.com/questions/72302501/

相关文章:

python - Python 何时从实例 __dict__ 返回到类 __dict__?

c++ - 如何从析构函数返回变量

html - 对 div 标签内的 span 元素应用边距和在 div 标签内应用边距有什么区别?

arrays - 将 + 或 += 与 array#map 一起使用?

python - 为什么有些功能pass了

python - 在 Python 中用正则表达式替换 '(' 时出错

python - 如何在 Python 中对列表进行排序和过滤?

c - 如何从内存中正确分配结构

spring-webflux - Netty Http 客户端连接池

javascript - 我如何在 react 中使用刷新 token