R: How to retrieve a column name of a data frame
R: How to retrieve a column name of a data frame
I am trying to extract the colnames of a data frame, based on the values in the cells. My data is a series of a couple hundred categories, with a simple binary 0 or 1 in the cells to indicate which column name I want in my new df.
To illustrate my point:
year cat1 cat2 cat3 ... catN
2000 0 0 1 0
2001 1 0 0 0
2002 0 0 0 1
....
2018 0 1 0 0
I am trying to get a df like:
year category
2000 cat3
2001 cat1
2002 catN
....
2018 cat2
My code:
newdf <- as.data.frame(colnames(mydf)[which(mydf == "1", arr.ind = TRUE)[2]])
But alas this only returns one category name!
Any help would be greatly appreciated!
1 Answer
1
A possible solution is this:
library(tidyverse)
df = data.frame(year = 2000:2002,
cat1 = c(0,0,1),
cat2 = c(1,0,0),
cat3 = c(0,1,0))
df %>%
gather(category, value, -year) %>% # reshape data
filter(value == 1) %>% # keep rows with 1s
select(-value) %>% # remove that column
arrange(year) # order that column (if needed)
# year category
# 1 2000 cat2
# 2 2001 cat3
# 3 2002 cat1
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.