Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
653 views
in Technique[技术] by (71.8m points)

r - Reordering dcast data frame

Is it possible to reorder the columns of data frame which is a result of dcast() call E.x.

Given the data:

> dput(copyOfRes)
structure(list(docName = c("doc2", "doc1", "doc1", "doc1", "doc1", 
"doc1", "doc1", "doc1", "doc1", "doc1", "doc1", "doc2"), day_of_week = c(11, 
11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2)), .Names = c("docName", 
"week_number"), row.names = c(NA, -12L), class = "data.frame")

So, when I use dcast() as follows:

library(reshape2)
dcast(copyOfRes, docName ~ week_number, length)

the result is:

  docName 2 11
1    doc1 0 10
2    doc2 1  1

I would like to have the data frame with decreasing value of week_number as follows:

  docName 11  2
1    doc1 10 0
2    doc2 1  1

I tried doing dcast(copyOfRes, docName ~ sort(week_number, decreasing= TRUE), length), but it still does not work. Any suggestions?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use factor() inside dcast() set appropriate order of levels.

 dcast(copyOfRes, 
   docName ~ factor(week_number,levels=unique(week_number)), length)
      docName 11 2
    1    doc1 10 0
    2    doc2  1 1

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...