I'm trying to find a way to convert multiple lines of text into a
data frame. I'm not sure if there's a way where you can use read.delim()
to read in multiple lines of text and create the following data frame
with something akin to rehape()
?.
The data is structured as follows:
A: 1
B: 2
C: 10
A: 34
B: 20
C: 6.7
A: 2
B: 78
C: 35
I'd like to convert this data to something that looks like the following data frame:
A B C
1 2 10
34 20 6.7
2 78 35
Apologies if there is an obvious way to do this!
How about :
s<-"A: 1
B: 2
C: 10
A: 34
B: 20
C: 6.7
A: 2
B: 78
C: 35
"
d<-read.delim(textConnection(s),header=FALSE,sep=":",strip.white=TRUE)
cols<-levels(d[,'V1'])
d<-data.frame(sapply(cols,function(x) {d['V2'][d['V1']==x]}, USE.NAMES=TRUE))
which yields:
A B C
1 1 2 10.0
2 34 20 6.7
3 2 78 35.0
Here is how to do it with the plyr package:
require("plyr")
my.data <- "A: 1
B: 2
C: 10
A: 34
B: 20
C: 6.7
A: 2
B: 78
C: 35"
df <- read.delim(textConnection(my.data),header=FALSE,sep=":",strip.white=TRUE)
as.data.frame(dlply(df,.(V1),function(x) x[[2]]))
You get
A B C
1 1 2 10.0
2 34 20 6.7
3 2 78 35.0
You can see what magic plyr is doing just by playing with dlply(df,.(V1))
or dlply(df,.(V1),function(x) x)
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