我在我的數據框中有一列需要使用分隔符「_」分割成多個列。但是,我需要僅保留每行中輸出的最後兩列(它將始終包含我需要的數據)。在許多記錄中,分隔符的數量不同,因此分割時導致不同數量的列。我怎樣才能得到每個觀察的最後兩列。的一些記錄分割r中的不規則列
unique(data$tagid.1)
[1] tag id 00000_0_0900_226000013189
[3] 00000_0_0986_114100005288 00000_0_0900_226000132078
[5] 00000_0_09LA_00000_0_0900_226000 00000_0_0900_226000131998
[7] 0000_2004000000000847 00000_0_0900_22600001\a\0048\022LI
[9] 00000_0_0900_226000013189I 00000_0_0986_114100006473
我試圖得到一個輸出類似下面是一些例子:
tagid$C1 tagid$C2
0986 114100005288
0900 226000013189
0900 226000
etc.... etc....
我的解決方案存在一些問題,即它輸出具有57K列兩行的那種緩慢的,任何人都有一個更好的解決方案比:
> data.tag <- as.data.frame(data$tagid.1)
> tag1 <- cSplit(data.tag,"data$tagid.1",sep="_")
>
> head(tag1)
data$tagid.1_1 data$tagid.1_2 data$tagid.1_3 data$tagid.1_4 data$tagid.1_5 data$tagid.1_6 data$tagid.1_7
1: tag id NA NA NA NA NA NA
2: 00000 0 0900 226000013189 NA NA NA
3: 00000 0 0900 226000013189 NA NA NA
4: 00000 0 0900 226000013189 NA NA NA
5: 00000 0 0900 226000013189 NA NA NA
6: 00000 0 0900 226000013189 NA NA NA
>
> lastValue <- function(x) tail(x[!is.na(x)], 2)
> tag2 <- as.data.frame(apply(tag1, 1, lastValue))
> dim(tag2)
[1] 2 56997
好主意!絕對有效 – sc73