2016-02-21 44 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

相关问题