如何将按列逻辑应用于数据框?
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]])
我想改变一个新列并用第一个 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]])