Hi,
I have a data.frame with 100 variables and I have assigned a "label",
"units" and "category" attribute to each variable. I would like to reorder
the variables in the data.frame by the "category" attributes but can't find
a way.
For example, the first variable is:
attributes(hh$aez)
$levels
[1] "coastal" "forest" "savannah"
$class
[1] "labelled" "factor"
$label
[1] ecological zone
93 Levels: 10 quantiles of welfare ... year of the interview
$units
[1] class
24 Levels: '05 PPP USD / year cedis / year cedis /year class geo-1 ... years
$category
[1] geography
7 Levels: agriculture demography design expenditure geography ... welfare
I have tried:
hh <- hh[, order(attr(hh, "category"))]
hh <- hh[, order(attr(hh[, 1:100], "category"))]
hh <- hh[, order(attr(dimnames(hh), "category"))]
but all the right-hand side assignments above return NULL.
Thanks very much for your help with this simple task!
--Mel.
_______________________
Melanie Bacou
3110 Wisconsin Ave, NW
Washington DC, 20016
+1 (202) 492-7978
mel at mbacou.com
On Apr 17, 2011, at 4:21 PM, Bacou, Melanie wrote:
Hi,
I have a data.frame with 100 variables and I have assigned a "label",
"units" and "category" attribute to each variable. I would like to
reorder
the variables in the data.frame by the "category" attributes but
can't find
a way.
Something like lapply(hh, attr, which="category") might return
something potentially useful. You obviously have a test case, but have
failed to offer it up. Possibly using order() around that might get
all the like category variables together.
For example, the first variable is:
attributes(hh$aez)
$levels
[1] "coastal" "forest" "savannah"
$class
[1] "labelled" "factor"
$label
[1] ecological zone
93 Levels: 10 quantiles of welfare ... year of the interview
$units
[1] class
24 Levels: '05 PPP USD / year cedis / year cedis /year class
geo-1 ... years
$category
[1] geography
7 Levels: agriculture demography design expenditure geography ...
welfare
I have tried:
hh <- hh[, order(attr(hh, "category")) ]
Did you look at what order(attr(hh, "category")) returns. Since you
assigned the attribute to individual columns (which are arranged as a
list, you cannot expect the whole object to return anything useable
when queried with attr().
hh <- hh[, order(attr(hh[, 1:100], "category"))]
(It would be the same since hh == hh[,1:100] )
hh <- hh[, order(attr(dimnames(hh), "category"))]
dimnames would _not_ have any attributes. And attr can only work on
one object at a a time anyway,
but all the right-hand side assignments above return NULL.
Thanks very much for your help with this simple task!
--Mel.
David,
Thanks very much. That was the right method.
--Mel.
-----Original Message-----
From: David Winsemius [mailto:dwinsemius at comcast.net]
Sent: Sunday, April 17, 2011 6:00 PM
To: Bacou, Melanie
Cc: r-help at r-project.org
Subject: Re: [R] How to retrieve a vector of a data.frame's variable
attributes?
On Apr 17, 2011, at 4:21 PM, Bacou, Melanie wrote:
Hi,
I have a data.frame with 100 variables and I have assigned a "label",
"units" and "category" attribute to each variable. I would like to
reorder
the variables in the data.frame by the "category" attributes but
can't find
a way.
Something like lapply(hh, attr, which="category") might return
something potentially useful. You obviously have a test case, but have
failed to offer it up. Possibly using order() around that might get
all the like category variables together.
For example, the first variable is:
attributes(hh$aez)
$levels
[1] "coastal" "forest" "savannah"
$class
[1] "labelled" "factor"
$label
[1] ecological zone
93 Levels: 10 quantiles of welfare ... year of the interview
$units
[1] class
24 Levels: '05 PPP USD / year cedis / year cedis /year class
geo-1 ... years
$category
[1] geography
7 Levels: agriculture demography design expenditure geography ...
welfare
I have tried:
hh <- hh[, order(attr(hh, "category")) ]
Did you look at what order(attr(hh, "category")) returns. Since you
assigned the attribute to individual columns (which are arranged as a
list, you cannot expect the whole object to return anything useable
when queried with attr().
hh <- hh[, order(attr(hh[, 1:100], "category"))]
(It would be the same since hh == hh[,1:100] )
hh <- hh[, order(attr(dimnames(hh), "category"))]
dimnames would _not_ have any attributes. And attr can only work on
one object at a a time anyway,
but all the right-hand side assignments above return NULL.
Thanks very much for your help with this simple task!
--Mel.