【发布时间】: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