rdatasculptor
rdatasculptor

Reputation: 8447

How to reshape dataframe with string variables?

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

Answers (2)

mrip
mrip

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

Metrics
Metrics

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

Related Questions