2016-09-07 62 views
1

我想根据/-将以下data.tableY列分成两列。如果有人帮我解决问题,我将非常感激。由于data.table根据两个条件将列分成多列

df1 <- 
    structure(list(Y = c("1", "2", "3", "4", "5", "6/7", "8-10")), 
      .Names = "Y", row.names = c(NA, -7L) 
      , class = "data.frame" 
      ) 
library(data.table) 
dt1 <- data.table(df1) 
dt1[ , c("Y1", "Y2") := tstrsplit(Y, "/", fixed = TRUE)] 
dt1 
     Y Y1 Y2 
1: 1 1 NA 
2: 2 2 NA 
3: 3 3 NA 
4: 4 4 NA 
5: 5 5 NA 
6: 6/7 6 7 
7: 8-10 8-10 NA 

要求

所需的结果是

 Y Y1 
1: 1 1 
2: 2 2 
3: 3 3 
4: 4 4 
5: 5 5 
6: 6/7 6 
7: 8-10 8 

回答

3

你可以只选择第一个数字,即

library(data.table) 
dt1[, Y1 := as.integer(gsub('[[:punct:]].*', '', Y))] 
dt1 
#  Y Y1 
#1: 1 1 
#2: 2 2 
#3: 3 3 
#4: 4 4 
#5: 5 5 
#6: 6/7 6 
#7: 8-10 8 
+0

如何让最后一栏的数字? – MYaseen208

+0

你可以把'gsub'换成'as.numeric'。我更新了我的回答 – Sotos

+2

'as.integer'可能更有效 – akrun