我试图根据第7列中的1和0来产生第8列中的运行计数。
不幸的是,我不断收到错误“q [k - 1,8] + q [k,7]中的错误:二元运算符的非数字参数”。
任何建议都会非常感激。
for(k in 3:nrow(q)){
if(q[k, 7] > 0){
q[k, 8] <- (q[k-1, 8] + q[k, 7])
q[k, 8] <- as.numeric(q[k, 8])
}
}
答案 0 :(得分:0)
你在谈论累积金额吗?不知道你的输入数据是什么样的......
df <-
data.frame(
col1 = c(NA, NA, NA, NA, NA, NA),
col2 = c(NA, NA, NA, NA, NA, NA),
col3 = c(NA, NA, NA, NA, NA, NA),
col4 = c(NA, NA, NA, NA, NA, NA),
col5 = c(NA, NA, NA, NA, NA, NA),
col6 = c(NA, NA, NA, NA, NA, NA),
col7 = c(0, 1, 0, 0, 1, 1)
)
df$col8 <- cumsum(df$col7)
print(df)
col1 col2 col3 col4 col5 col6 col7 col8
1 NA NA NA NA NA NA 0 0
2 NA NA NA NA NA NA 1 1
3 NA NA NA NA NA NA 0 1
4 NA NA NA NA NA NA 0 1
5 NA NA NA NA NA NA 1 2
6 NA NA NA NA NA NA 1 3
答案 1 :(得分:0)
您是否检查过第7列或第8列未存储为因子/字符?如果任一列不是逻辑或数字,则行q [k - 1,8] + q [k,7]将产生错误。
尝试使用is.numeric()和is.logical()来检查列。