Re: [R] Dataframe manipulation

From: Dimitris Rizopoulos <dimitris.rizopoulos_at_med.kuleuven.be>
Date: Tue, 4 Dec 2007 17:25:54 +0100

my original reply was intended for the original version of 'df', in which both columns were factors. In your example you have added a numeric column, so not exactly the case I've replied for. For your example can use the following:

testdata <- as.factor(c("1.1",NA,"2.3","5.5")) testdata2 <- as.factor(c("1.7","4.3","8.5",10.0)) df <- data.frame(testdata, testdata2)

df$testdata1 <-
as.numeric(levels(df$testdata))[as.integer(df$testdata)]

fcts <- sapply(df, is.factor)
df[fcts] <- lapply(df[fcts], function (x) as.numeric(levels(x))[as.integer(x)])
df
str(df)

Best,
Dimitris



Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium

Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


> "Dimitris Rizopoulos" <dimitris.rizopoulos@med.kuleuven.be> wrote in
> news:002001c8367f$65a8d8d0$0540210a_at_www.domain:
>
>> try this (also look at R-FAQ 7.10):
>>
>> sapply(df, function (x) as.numeric(levels(x))[as.integer(x)])
>
> That looks rather dangerous. By the time I saw your suggestion, I
> had
> already added an extra variable with:
>
> df$testdata1<-as.numeric(levels(df$testdata))[as.integer(df$testdata)]
>
> When I tried your suggestion I got no error, but there was also no
> effect. When I tried:
>
> df2<-sapply(df, function (x) as.numeric(levels(x))[as.integer(x)])
>
> I discovered that the numeric variable, testdata1, had been entirely
> coverted to NA's and str(df2) did not look data.frame-like.
>
>> is.data.frame(df2)
> [1] FALSE
>
> --
> David Winsemius
>
>>
>> ----- Original Message -----
>> From: "Antje" <niederlein-rstat_at_yahoo.de>
>> To: <r-help_at_stat.math.ethz.ch>
>> Sent: Tuesday, December 04, 2007 11:46 AM
>> Subject: [R] Dataframe manipulation
>>
>>
>>> Hello,
>>>
>>> can anybody help me with this problem?
>>> I have a dataframe, which contains its values as factors though I
>>> have numbers
>>> but it was read as factors with "scan". Now I would like to
>>> convert
>>> these
>>> columns (multiple) to a numeric format.
>>>
>>>
>>> # this example creates a similar situation
>>>
>>> testdata <- as.factor(c("1.1",NA,"2.3","5.5"))
>>> testdata2 <- as.factor(c("1.7","4.3","8.5",10.0))
>>>
>>> df <- data.frame(testdata, testdata2)
>>>
>>> what do I have to do to get the same datafram but with numeric
>>> values???
>>>
>
> ______________________________________________
> 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.
>

Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



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. Received on Tue 04 Dec 2007 - 16:28:36 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 04 Dec 2007 - 17:30:18 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.