在R中,根据前一列的数值生成列中的运行计数

时间:2017-05-10 20:05:28

标签: r trading

我试图根据第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])
 }
  }

2 个答案:

答案 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()来检查列。