Hi, I was wondering if there is an easy way that I am missing for turning a long dataframe into a wide one. Below is sample code that will make what I have and, in comments, the form of what I want: # Have: dataframe like 'df' df <- expand.grid( x=LETTERS[1:3], y=LETTERS[4:6]) df$z <- letters[1:length(df[,1])] # Want: data.frame that has following form: # A B C # D a b c # E d e f # F g h i I looked at 'xtabs' and 'cast' from reshape/reshape2, but unless I'm misunderstanding something, these will work only for the 'z' column being numeric, not textual. Is there an easy way to do this with 'z' being textual rather than numeric? tia, Matt [[alternative HTML version deleted]]
Jonathan Christensen
2010-Dec-09 02:33 UTC
[R] Converting data.frame from long to wide format
Matt, library(reshape2) wide.df <- dcast(df, y ~ x) Works great for me. Jonathan On Wed, Dec 8, 2010 at 7:26 PM, Matthew Pettis <matthew.pettis at gmail.com> wrote:> Hi, > > I was wondering if there is an easy way that I am missing for turning a long > dataframe into a wide one. ?Below is sample code that will make what I have > and, in comments, the form of what I want: > > ? ?# ? Have: dataframe like 'df' > df <- expand.grid( x=LETTERS[1:3], y=LETTERS[4:6]) > df$z <- letters[1:length(df[,1])] > > # Want: data.frame that has following form: > # ? ? ? A ? B ? C > # ? D ? a ? b ? c > # ? E ? d ? e ? f > # ? F ? g ? h ? i > > > I looked at 'xtabs' and 'cast' from reshape/reshape2, but unless I'm > misunderstanding something, these will work only for the 'z' column being > numeric, not textual. ?Is there an easy way to do this with 'z' being > textual rather than numeric? > > tia, > Matt > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >