[R] Odp: data.frame: How to get the classes of all components and how to remove their factor structure?

Marius Hofert m_hofert at web.de
Tue Jun 28 10:18:18 CEST 2011


Dear Petr,

thanks for your posts, they perfectly answered my questions.

Cheers,

Marius


On 2011-06-28, at 09:49 , Petr PIKAL wrote:

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



More information about the R-help mailing list