我有一个巨大的data.frame [350000,431],我需要做一些清洁工作。
其中一项清理操作是将所有布尔列c(0,1)
转换为c(FALSE, TRUE)
。
我可以通过列名包含字符串" include"的条件来识别这些列。
所以我需要做那样的事情:
data.clean[,4:272] <- ifelse(data.clean[,4:275] == 1,"TRUE", "FALSE")
而不是4:272
(包含&#34的列的索引;包括&#34;,我想为此目的使用更强大的正则表达式。
答案 0 :(得分:0)
模仿您的数据(只有三列,两列符合“包含”条件“):
data.clean <- data.frame(exclude = sample(LETTERS, 3.5e5, replace=TRUE), this.include = sample(c(0,1), 3.5e5, replace=TRUE), this.include2=sample(c(0,1), 3.5e5, replace=TRUE))
> head(data.clean)
exclude this.include this.include2
1 W 1 1
2 Y 1 0
3 F 0 0
4 W 0 1
5 B 1 0
6 M 1 1
使用names
和grep
标识正确的列,并使用直接逻辑比较将值返回到TRUE
和FALSE
:
data.clean[,names(data.clean)[grep("include", names(data.clean))]] <- data.clean[,names(data.clean)[grep("include", names(data.clean))]] == 1
> head(data.clean)
exclude this.include this.include2
1 W TRUE TRUE
2 Y TRUE FALSE
3 F FALSE FALSE
4 W FALSE TRUE
5 B TRUE FALSE
6 M TRUE TRUE