我的数据集有313列,约52000行信息。我需要删除包含单词" PERMISSIONS"的每一列。我尝试过grep和dplyr,但我似乎无法让它发挥作用。
我已经阅读了该文件,
testSet <- read.csv("/Users/.../data.csv")
其他示例显示如何按名称删除列,但我不知道如何处理通配符。不太清楚从哪里开始。
答案 0 :(得分:6)
如果您只想删除名为PERMISSIONS
的列,则可以使用dplyr
包中的select函数。
df <- data.frame("PERMISSIONS" = c(1,2), "Col2" = c(1,4), "Col3" = c(1,2))
PERMISSIONS Col2 Col3
1 1 1
2 4 2
df_sub <- select(df, -contains("PERMISSIONS"))
Col2 Col3
1 1
4 2
答案 1 :(得分:4)
试试这个,
New.testSet <- testSet[,!grepl("PERMISSIONS", colnames(testSet))]
编辑:根据评论更改了脚本。
答案 2 :(得分:4)
从我可以理解的问题来看,OP有一个这样的数据框:
df <- read.table(text = '
a b c d
e f PERMISSIONS g
h i j k
PERMISSIONS l m n',
stringsAsFactors = F)
目标是删除任何具有任何“允许”的列。条目。假设“PERMISSIONS&#39;”中没有可变性,则此代码应该有效:
cols <- colSums(mapply('==', 'PERMISSIONS', df))
new.df <- df[,which(cols == 0)]
答案 3 :(得分:3)
我们可以app.component('myComponent', {
template: '<input ng-model="$ctrl.data" type="text">',
bindings: { 'data': '<' },
controller: function() {
this.originalData = angular.copy(this.data);
this.uiCanExit = function() {
if (!angular.equals(this.data, this.originalData) {
// Note: This could also return a Promise and request async
// confirmation using something like ui-bootstrap $modal
return window.confirm("Data has changed. Exit anyway and lose changes?");
}
}
}
使用grepl
否定,
!
答案 4 :(得分:1)
看起来这些答案只能做你想要的一部分。我认为这就是你正在寻找的东西。可能有更好的方法来写这个。
library(data.table)
df = data.frame("PERMISSIONS" = c(1,2), "Col2" = c("PERMISSIONS","A"), "Col3" = c(1,2))
PERMISSIONS Col2 Col3
1 1 PERMISSIONS 1
2 2 A 2
df = df[,!grepl("PERMISSIONS",colnames(df))]
setDT(df)
ind = df[, lapply(.SD, function(x) grepl("PERMISSIONS", x, perl=TRUE))]
df[,which(colSums(ind) == 0), with = FALSE]
Col3
1: 1
2: 2