根据 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
我正在尝试制作垃圾邮件预测器。我有话要说。
我得到了矩阵,其中列是邮件中出现的单词,结果是 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