如何将按列逻辑应用于数据框?

How to apply column-wise logic to a dataframe?

我想改变一个新列并用第一个 column/year 包含 0 的列填充它。

考虑以下数据框:

df <- data.frame(pred2014 = c(0,0,1), pred2015 = c(0,0,1),
                 pred2016 = c(0,1,1), measured2017 = c(0,0,1))
df

在此示例中,第 1 行将为 pred2014,第 2 行 = pred2016,第 3 行 = NA。

我们可以使用max.col

nm1 <- names(df)[max.col(df == 0, 'first') * NA^!rowSums(df == 0)]
nm1
#[1] "pred2014" "pred2016" NA    

或使用apply

apply(df, 1, function(x) names(x)[which(x == 0)[1]])