On Nov 12, 2011, at 2:47 PM, Sammy Zee wrote:
When I use rbind() or rbind.data.frame() to add a row to an existing
dataframe, it appears that attributes for the column of type
"factor" are
dropped. See the sample example below to reproduce the problem. Please
suggest How I can fix this.
Thanks,
Sammy
a=c("Male", "Male", "Female", "Male")
b=c(1,2,3,4)
c=c("great", "bad", "good", "bad")
dataset<- data.frame (gender = a, count = b, answer = c)
dataset
gender count answer
1 Male 1 great
2 Male 2 bad
3 Female 3 good
4 Male 4 bad
attributes(dataset$answer)
$levels
[1] "bad" "good" "great"
$class
[1] "factor"
Now adding some custom attributes to column dataset$answer
attributes(dataset$answer)<-c(attributes(dataset
$answer),list(newattr1="custom-attr1"))
attributes(dataset$answer)<-c(attributes(dataset
$answer),list(newattr2="custom-attr2"))
If you look through the code of rbind.data.frame you see that column
values are processed with the 'factor' function.
> attributes(dataset$answer)
$levels
[1] "bad" "good" "great"
$class
[1] "factor"
$newattr1
[1] "custom-attr1"
$newattr2
[1] "custom-attr2"
> attributes(factor(dataset$answer))
$levels
[1] "bad" "good" "great"
$class
[1] "factor"
So I think you are out of luck. You will need to restore the "special
attributes" yourself.
--
David.
attributes(dataset$answer)
$levels
[1] "bad" "good" "great"
$class
[1] "factor"
$newattr1
[1] "custom-attr1"
$newattr2
[1] "custom-attr2"
However as soon as I add a row to this data frame ("dataset") by
rbind(),
it loses the custom
attributes ("newattr1" and "newattr2") I have just added
newrow = c(gender="Female", count = 5, answer = "great")
dataset <- rbind(dataset, newrow)
attributes(dataset$answer)
$levels
[1] "bad" "good" "great"
$class
[1] "factor"
the two custom attributes are dropped!! Any suggestion why this is
happening.
On Fri, Nov 11, 2011 at 11:44 AM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us>wrote:
As the doctor says, if it hurts "don't do that".
A factor is a sequence of integers with a corresponding list of
character
strings. Factors in two separate vectors can and usually do map the
same
integer to different strings, and R cannot tell how you want that
resolved.
Convert these columns to character before combining them, and only
convert
to factor when you have all of your possibilities present (or you
specify
them in the creation of the factor vector).
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go
Live...
DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live
Go...
Live: OO#.. Dead: OO#..
Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#.
rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
Sammy Zee <szee2...@gmail.com> wrote:
Hi all,
When I use rbind() or rbind.data.frame() to add a row to an existing
dataframe, it appears that attributes for the column of type
"factor"
are
dropped. I see the following post with same problem. However i did
not
see
any reply to the following posting offering a solution. Could
someone
please help.
http://r.789695.n4.nabble.com/rbind-data-frame-drops-attributes-for-factor-variables-td919575.html
Thanks,
Sammy
[[alternative HTML version deleted]]
______________________________________________
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.
[[alternative HTML version deleted]]
______________________________________________
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.
David Winsemius, MD
West Hartford, CT
______________________________________________
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.