Skip to content

How to retrieve a vector of a data.frame's variable attributes?

3 messages · David Winsemius, Bacou, Melanie

#
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:
$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:

            
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.
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().
(It would be the same since hh == hh[,1:100] )
dimnames would _not_ have any attributes. And attr can only work on  
one object at a a time anyway,
David Winsemius, MD
West Hartford, CT
#
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:

            
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.
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().
(It would be the same since hh == hh[,1:100] )
dimnames would _not_ have any attributes. And attr can only work on  
one object at a a time anyway,
David Winsemius, MD
West Hartford, CT