> > Dear expeRts, > > I have two questions concerning data frames: > (1) How can I apply the class function to each component in a data.frame? > As you can see below, applying class to each column is not the right > approach; applying it to each component seems bulky. > (2) After transforming the data frame a bit, the classes of certain > components change to factor. How can I remove the factor structure? > > Cheers, > > Marius > > x <- c(2004:2010, 2002:2011, 2000:2011) > df <- data.frame(x=x, group=c(rep("low",7), rep("middle",10), rep("high",12)), > y=x+100*runif(length(x))) > > ## Question (1): why do the following lines do not give the same "class"? > apply(df, 2, class) > class(df$x) > class(df$group) > class(df$y) > > df. <- as.data.frame(xtabs(y ~ x + group, data=df)) > > class(df.$x) > class(df.$group) > class(df.$Freq) > > ## Question (2): how can I remove the factor structure from x? > df.$x <- as.numeric(as.character(df.$x)) # seems bulky; note that
If you do it often you can unfactor <- function(x) as.numeric(as.character(x)) df.$x <- unfactor(df.$x) or you can use df. <- as.data.frame(xtabs(y ~ x + group, data=df), stringsAsFactors=FALSE) df.$x <- as.numeric(df.$x) But it seems to me that it is not much less bulkier. Regards Petr > as.numeric(df.$x) is not correct > class(df.$x) > ______________________________________________ > R-help@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. ______________________________________________ R-help@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.