如果另一列中的值符合标准,则对列进行求和[R]

时间:2016-12-28 14:59:48

标签: r

我目前正试图找到一种方法来总结每个月(M1,M2等)的数据框(余额)的一列 - 如果每个月的金额高于某个值(例如,小于1)。

我已尝试过循环和lapply公式,但会遇到各种错误,如下所示。不幸的是,由于df太大,我不能手动执行此操作。

到目前为止,这是我尝试过的一个例子df:

df["<=1M",] <- for (i in 1:ncol(df)){for (j in 1:nrow(df)){sum(df$Balance[which(df[i,j]<=1)]}}

df["<=1M",] <- lapply(df, function(i) sum(df$Balance[cumulative[i,1:ncol(df)] <= 1]))

M1  M2  M3  M4  M5  Balance
0   0   0   1   2   100
1   2   2   3   3   200
0   0   0   0   0   200
1   1   1   1   1   200
1   2   3   4   5   250

任何提示或建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

我们可以尝试

as.vector(sapply(df[1:5], function(x) sum(df$Balance[x <=1])))
#[1] 950 500 500 500 400

或使用vectorized方法

colSums(df$Balance*(df[1:5] <=1))
# M1  M2  M3  M4  M5 
#950 500 500 500 400