I am having trouble converting a large text string to a dataframe. I've been unable to figure this simple task out yet. Hoping for your help.
x <- "1 apple 200 blueberry 3000 pear 4400 raspberry"
I'd like to convert this to a dataframe that looks like this:
id name
1 apple
200 blueberry
30000 pear
4400 raspberrry
We can use gsub
with read.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
Or with fread
library(data.table)
fread(gsub("(?<=[a-z])\\s+", "\n", x, perl=TRUE), col.names = c("id", "name"))
Or this would also work without the gsub
by specifying the col.names
with 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
Try this:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With