首页 > 解决方案 > 在 R 中,使用变量名而不是列值来将列转换为二进制

问题描述

我的数据集中有一组分类列,我将它们转换为二进制变量 (1/0)。

其中有很多,目前,我已经调用了列名和值,将其转换为 word 文档,然后在代码中直接使用列值:

binarydata<- rawdata3
my_cols = c(8:38, 48:52, 59:69, 96:118, 120:132, 145:148, 154:170, 223:330) 
binarydata[my_cols] <- as.integer(!is.na(binarydata[my_cols]))

有没有办法使用变量名而不是值来做到这一点?

任何帮助表示赞赏,

标签: rbinary

解决方案


我们可以使用colnames子集。 colnames与它相比更通用,names因为它也可以使用matrix

nm1 <- colnames(binarydata)[my_cols]
binarydata[nm1] <- lapply(binarydata[nm1], function(x) +(!is.na(x)))

此外,使用,我们可以指定范围 ( )dplyr中的列名:

library(dplyr)
mtcars1 <- mtcars %>% 
      mutate(across(c(mpg:disp, wt:qsec), ~ +(!is.na(.))))

推荐阅读