如何使用字符串变量重塑数据框?

时间:2013-10-13 14:31:42

标签: r reshape

我有一个包含文本数据的数据框。它看起来像这样:

    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

现在我想重新组织这个数据帧并使用'var'的值作为列名,并将数据帧更改为具有两行(user1和user2)的数据帧。 Text1到text10是变量值。 我尝试了reshape2,但我没有成功地做到这一点。

library(reshape2)
datafile.melt <- melt(data = datafile, id.vars=c('users','var'), measure.vars=c('texts'))
datafile.values <- dcast(datafile.melt, var ~ users)

结果是:

  var user1  user2
1   1 text1  text6
2   2 text2  text7
3   3 text3  text8
4   4 text4  text9
5   5 text5 text10

正如您所见,'user1'和'user2'已更改为列名,而var值则没有。我想将其改为:

 users     1     2     3     4      5
1 user1 text1 text2 text3 text4  text5
2 user2 text6 text7 text8 text9 text10

有没有人知道如何正确地做到这一点? 非常感谢提前!

2 个答案:

答案 0 :(得分:3)

使用基础R中的reshape

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

答案 1 :(得分:1)

根据我的评论,答案只是使用users ~ var代替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