根据 R 中的求和条件删除列

Remove columns on the condition of sum in R

我正在尝试制作垃圾邮件预测器。我有话要说。

我得到了矩阵,其中列是邮件中出现的单词,结果是 spam/non-spam 例如

示例:-

mail thing money dollar spam
0     1     1     1     1
1     0     0     1     0
0     0     1     1     1

等等。 这里的"spam"栏表示邮件是否是垃圾邮件。

我应该如何删除列的总和(仅当 spam 为 0 时)小于特定值(比方说 x)的列?

这样我就可以删除检测垃圾邮件根本不需要的术语。

感谢您的帮助!

set.seed(1)

mydata <- data.frame(A = sample(0:1, 10, T),
                     B = sample(0:1, 10, T),
                     C = sample(0:1, 10, T),
                     D = sample(0:1, 10, T),
                     spam = sample(0:1, 10, T))

##    A B C D spam
## 1  0 0 1 0    1
## 2  0 0 0 1    1
## 3  1 1 1 0    1
## 4  1 0 0 0    1
## 5  0 1 0 1    1
## 6  1 0 0 1    1
## 7  1 1 0 1    0
## 8  1 1 0 0    0
## 9  1 0 1 1    1
## 10 0 1 0 0    1


mydata_ones <- mydata [ mydata[, ncol(mydata)] == 0, ]

colSums(mydata_ones)

## A    B    C    D spam 
## 2    2    0    1    0 

cbind(mydata[, -ncol(mydata)] [, colSums(mydata_ones) >= 2 ], 
      spam = mydata[, ncol(mydata)])

##    A B spam
## 1  0 0    1
## 2  0 0    1
## 3  1 1    1
## 4  1 0    1
## 5  0 1    1
## 6  1 0    1
## 7  1 1    0
## 8  1 1    0
## 9  1 0    1
## 10 0 1    1