我试图根据单元格中的值提取数据框的别名。我的数据是一系列数百个类别的,在单元格中有一个简单的二进制0或1,以指示我要在新df中使用的列名。
为了说明我的观点:
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
我正在尝试像这样的df:
year category
2000 cat3
2001 cat1
2002 catN
....
2018 cat2
我的代码:
newdf <- as.data.frame(colnames(mydf)[which(mydf == "1", arr.ind = TRUE)[2]])
但是a,这只会返回一个类别名称!
任何帮助将不胜感激!
基本的R解决方案:
使用sapply
查找其中的一个并获取名称。
out <- data.frame(year = df1$year, category = names(sapply(df1[, -1], function(x) which(x == 1))))
out
year category
1 2000 cat1
2 2001 cat2
3 2002 cat3
4 2018 catN
数据:
df1 <- structure(list(year = c(2000L, 2001L, 2002L, 2018L), cat1 = c(0L,
1L, 0L, 0L), cat2 = c(0L, 0L, 0L, 1L), cat3 = c(1L, 0L, 0L, 0L
), catN = c(0L, 0L, 1L, 0L)), class = "data.frame", row.names = c(NA,
-4L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句