R将大字符串转换为数据帧

时间:2016-12-10 13:45:03

标签: r string dataframe

我无法将大型文本字符串转换为数据帧。我一直无法解决这个简单的任务。希望得到你的帮助。

x <- "1 apple 200 blueberry 3000 pear 4400 raspberry"

我想将其转换为如下所示的数据框:

id    name
1     apple
200   blueberry
30000 pear
4400  raspberrry

3 个答案:

答案 0 :(得分:6)

我们可以将gsubread.table

一起使用
read.table(text=gsub("(?<=[a-z])\\s+", "\n", x, perl=TRUE), 
            header=FALSE, col.names = c("id", "name"))
#    id      name
#1    1     apple
#2  200 blueberry
#3 3000      pear
#4 4400 raspberry

fread

library(data.table)
fread(gsub("(?<=[a-z])\\s+", "\n", x, perl=TRUE), col.names = c("id", "name"))

或者通过使用gsub

指定col.names,这也可以在没有read.table的情况下发挥作用
read.table(text=x,col.names=c('ID','Name'))
#    ID      Name
#1    1     apple
#2  200 blueberry
#3 3000      pear
#4 4400 raspberry

答案 1 :(得分:5)

试试这个:

r <- unlist(strsplit(x, " "))
data.frame(id=as.numeric(r[c(TRUE,FALSE)]), name=r[c(FALSE,TRUE)])

#    id      name
#1    1     apple
#2  200 blueberry
#3 3000      pear
#4 4400 raspberry

答案 2 :(得分:3)

  read.table(text=x,col.names=c('ID','Name'))
  #     ID      Name
    1    1     apple
    2  200 blueberry
    3 3000      pear
    4 4400 raspberry