我有一个包含文本数据的数据框。它看起来像这样:
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
有没有人知道如何正确地做到这一点? 非常感谢提前!
答案 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