2016-02-21 74 views
-1

我有一個data.frame,其中一列是用逗號分隔的數字列表,其中一個列的長度是可變的。下面是一個簡單的例子:在一個data.frame列中將逗號分隔的數字列表轉換爲新列中的新列表

df <- data.frame(ids=c('1','2','3'), coords=c('1,2,3', '4,4,4,4', '9,8,7,6,5')) 
ids coords 
1  1,2,3 
2  4,4,4,4 
3  9,8,7,6,5 

我想創建一個新的列那就是都在COORDS列中的數字的功能號碼清單。例如,函數x + 10:

ids coords  coordsf 
1  1,2,3  11,12,13 
2  4,4,4,4 14,14,14,14 
3  9,8,7,6,5 19,18,17,16,15 

回答

1

我們可以使用gsub

df$coordsf <- sub(',','',gsub('^|,', ',1',df$coords)) 
df$coordsf 
#[1] "11,12,13"  "14,14,14,14" "19,18,17,16,15" 

或者

gsub("(,|^)(?=\\d)", "\\11", df$coords, perl=TRUE) 
#[1] "11,12,13"  "14,14,14,14" "19,18,17,16,15" 

或者,如果我們需要增加10

sapply(strsplit(as.character(df$coords), ","), 
     function(x) paste(as.numeric(x)+10,collapse=",")) 
#[1] "11,12,13"  "14,14,14,14" "19,18,17,16,15" 
+0

謝謝,但我需要的功能是一個數學函數。例如,像((800-x)/ 800 * 2)-1。 – YBA

+0

@YBA該列是一個「因素」。您不能在「因素/字符」列上應用數學函數。 – akrun

+0

當然,這是問題的一部分。我從一個製表符分隔的數據文件中讀取它。我相信它有可能在R中分離爲一個字符串向量,將每個字符串轉換爲整數,計算函數,然後從新向量創建新字符串。 – YBA

相關問題