【问题标题】:replace all spaces and colons in a data.table with underscore r用下划线 r 替换 data.table 中的所有空格和冒号
【发布时间】:2016-02-10 00:18:39
【问题描述】:

我有一个 467,000 x 8000 的数据表。

我想用下划线替换所有冒号和空格。对于 data.table 中的每一行和每一列。

而不是

Assignment 5: Constitutional Law

Assignment_5__Constitutional_Law 

我的数据包括日期、数字和字符变量。

library(data.table)
sample<-data.table(STUDENT_ID = c("A1","A2","A3","A4","A5"), Duedate=c("2015-07-29 08:00", "2015-08-05 08:00","2015-08-12 08:00", "2015-08-19 08:00", "2015-08-26 08:00"),Assignment=c(rep("Assignment 1: Physics",5)), GRADE = c(70:74))
sample$Duedate <- as.Date(sample$Duedate,"%Y-%m-%d %H:%M")

【问题讨论】:

  • 如果列都是字符或因子变量,请尝试dt[, lapply(.SD, function(x) gsub("\\s", "_", x))]。如果您添加了与您的数据相似的示例数据表,我们可以更加确定。
  • 你试过什么?我假设您应该能够使用:= 在每一列上运行gsub - 类似于DT[, (names(DT)) := lapply(.SD, gsub, pattern="[: ]", replacement="_")]

标签: regex r string data.table


【解决方案1】:

找到字符变量,然后通过引用替换它们:

charvars <- sapply(sample,is.character)
sample[,
       (names(sample)[charvars]) := lapply(.SD, gsub, pat="[: ]", rep="_"),
       .SDcols=charvars
      ]
sample

#   STUDENT_ID    Duedate            Assignment GRADE
#1:         A1 2015-07-29 Assignment_1__Physics    70
#2:         A2 2015-08-05 Assignment_1__Physics    71
#3:         A3 2015-08-12 Assignment_1__Physics    72
#4:         A4 2015-08-19 Assignment_1__Physics    73
#5:         A5 2015-08-26 Assignment_1__Physics    74

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2011-07-12
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多