【问题标题】:data.table substring on column [duplicate]列上的data.table子字符串[重复]
【发布时间】:2017-06-23 14:25:21
【问题描述】:

给定这个data.table

DT = data.table(item=c("item1 - description one", "item2 - description two", "item3 - description three"), sales=1:3)

DT
                        item sales
1:   item1 - description one     1
2:   item2 - description two     2
3: item3 - description three     3

我怎样才能轻松获得看起来像这样的输出

      code sales
1:   item1     1
2:   item2     2
3:   item3     3

可能非常简单,但在此先感谢。

【问题讨论】:

  • 按空间分割,然后保留第一个值。比如:dt1$item_clean <- sapply(strsplit(dt1$item, " "), function(i)i[1])
  • 只需DT[, item := sub('\\s+.*', '', item)]
  • data.table(code = substr(DT[[1]], 1, regexpr(' ', DT[[1]])-1), sales = DT[[2]])
  • 感谢大家的及时回复...抱歉重复。

标签: r data.table substring


【解决方案1】:

你可以这样做:

DT[, item:=gsub(item, pattern=" - [a-zA-Z ]+", replacement="")]
setnames(DT, "item", "code")

#    code sales
#1: item1     1
#2: item2     2
#3: item3     3

【讨论】:

  • 感谢 Rafael 的及时回复。像魅力一样工作。
猜你喜欢
  • 2014-07-15
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2020-11-16
  • 2014-07-01
  • 1970-01-01
  • 2011-07-25
  • 2014-11-05
相关资源
最近更新 更多