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. >