2017-07-24 26 views
0

我有一個樣品數據幀:如何剖析字符串以創建新變量?

ID Code 
1 1, 1, 1 
2 1, 2, 3 
3 2, 2 
4 3 
5 2, 1 

其中 「代碼」 包括編碼的顏色1,2,3,或這些的組合。 「代碼」是字符類型。我想基於「代碼」的值(一個或多個)創建一個新的專欄,讓我有這樣一個數據幀:

ID Code  Description 
1 1, 1, 1   White 
2 1, 2, 3  Multiple   
3 2, 2    Green 
4 3     Blue 
5 2, 1   Multiple 

新列被編碼爲「多」,如果有超過1顏色「代碼」

+0

預期的輸出請使用'dput'產生的示例數據.frame並將結果發佈到您的問題中。目前,還不清楚你的第二個變量的結構是什麼。 – lmo

回答

1

我們創建一個名爲key/valuevector,然後拆分「代碼」創建基於匹配的「V1」

v1 <- setNames(c('White', 'Green', 'Blue'), 1:3) 
df1$Description <- unname(sapply(strsplit(df1$Code, ",\\s*"), function(x) 
     if(length(unique(x))> 1) 'Multiple' else v1[unique(x)])) 
df1 
# ID Code Description 
#1 1 1, 1, 1  White 
#2 2 1, 2, 3 Multiple 
#3 3 2, 2  Green 
#4 4  3  Blue 
#5 5 2, 1 Multiple 
相關問題