如果一列的colSums小于20,则使用所有这些列的总和创建一个新列

时间:2019-07-24 08:18:06

标签: r dataframe

我有一个数据框,并且我有兴趣在90和177列之间划分一些列,其条件是:如果该列的colSums为<20,则删除该列。 此外,我想要一个新列,该列的总和是colSums <20。


rowSums(new[,colSums(new[,90:177])<20])

另外,从90到177的列与从2到89的列相关。如果我需要延迟90列,那么我还需要延迟2列,如果我需要延迟91列,那么我也需要延迟列3,依此类推。但是,我需要一个新列,该列是从2到89的所有列的总和,需要延迟。

一个例子:

enter image description here

在这种情况下:因为90和92的求和小于20,所以我需要指定col 2,col 4和col90和col 92。 并创建两个新的列,一个具有col 2和col 4的总和。另一个具有col90和col 92的总和:

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试做

#Find indices of columns which have colSums less than 20
inds <- which(colSums(new[, 90:177], na.rm = TRUE) < 20)

#Add 2 new columns with rowSums from to be deleted column
df$z1 <- rowSums(new[, inds + 1])
df$z2 <- rowSums(new[, inds + 89])

#Delete paired columns
df[-c(inds + 1, inds + 89)]