将一个data.frame列中以逗号分隔的数字列表转换为新列中的新列表

时间:2016-02-21 20:06:54

标签: r csv dataframe

我有一个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 个答案:

答案 0 :(得分: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"