Reputation: 8447
I have a dataframe with text data. It looks like this:
var texts users
1 1 text1 user1
2 2 text2 user1
3 3 text3 user1
4 4 text4 user1
5 5 text5 user1
6 1 text6 user2
7 2 text7 user2
8 3 text8 user2
9 4 text9 user2
10 5 text10 user2
Now I want to reorganize this dataframe and use the values of 'var' as column names and change the dataframe into a dataframe with two rows (user1 and user2). Text1 to text10 are the variable values. I tried reshape2, but I haven't succeeded in doing it properly.
library(reshape2)
datafile.melt <- melt(data = datafile, id.vars=c('users','var'), measure.vars=c('texts'))
datafile.values <- dcast(datafile.melt, var ~ users)
the result is:
var user1 user2
1 1 text1 text6
2 2 text2 text7
3 3 text3 text8
4 4 text4 text9
5 5 text5 text10
As you can see 'user1' and 'user2' changed into column names, and the var values didn't. And I want to change it into:
users 1 2 3 4 5
1 user1 text1 text2 text3 text4 text5
2 user2 text6 text7 text8 text9 text10
Does anyone have an idea how to do this properly? Many thanks in advance!
Upvotes: 0
Views: 3700
Reputation: 15163
From my comment, the answer is simply to use users ~ var
instead of var ~ users
:
> dcast(datafile.melt, users ~ var)
users 1 2 3 4 5
1 user1 text1 text2 text3 text4 text5
2 user2 text6 text7 text8 text9 text10
Upvotes: 1
Reputation: 15458
Using reshape
from base R
nn<-reshape(df1,timevar="var",idvar="users",direction="wide")
names(nn)[-1]<-as.character(unique(df1$var))
> nn
users 1 2 3 4 5
1 user1 text1 text2 text3 text4 text5
6 user2 text6 text7 text8 text9 text10
Upvotes: 3