2016-09-07 2 views
1

data.tableY列を/または-に基づいて2つの列に分割したいと考えています。誰かが私を助けてくれたら大変感謝しています。おかげ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

'as.numeric'に' gsub'をラップすることができます。私は自分の答えを更新しました – Sotos

+2

'as.integer'がより効率的かもしれません – akrun