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

标签 r dataframe for-loop lapply

所以我有这个数据框

#   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

关于r - 根据特定列中的数据框条目添加新列的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72302501/

相关文章:

r - 在中的两个SF POINT特征之间绘制线

python - Pandas DataFrame,计算相对于当前行列值的最大列值

python - pandas_profiling 主要方法在 Windows 10 上无法正常工作...构造函数有效,但方法无效

r - 为什么 R 对象不在函数或 "for"循环中打印?

r - 在数字 <= 9 前面放一个 0 (r 中的 for 循环仅适用于最后一个实例)

c++ - 在指针中列出元素时出现问题

r - R : how to run faster? 中的强力球

r - 从 R 调用并行 fortran MPI 子例程

r - 使用 R 中的 Grepl 查找数据框列中存在的单词列表

python - 如何解决 Python Pandas DataFrame 的 "Out of bounds nanosecond timestamp"错误?