r - 生成向量,将(按名称)列分组到 R 中的新向量中
问题描述
我有一个带有数字(NP)和二进制(所有其余)变量的原始数据集(我的数据集要大得多,包括更多的数字和虚拟变量):
NP <- c(4,6,18,1,3,12,8)
iso_mode_USA <- c(1, 0, 0, 0, 0, 1, 1)
iso_mode_CHN <- c(0, 1, 1, 0, 0, 0, 0)
iso_mode_COL <- c(0, 0, 0, 1, 1, 0, 0)
iso_mode_mod_USA <- c(1, 0, 0, 0, 0, 1, 1)
iso_mode_mod_CHN <- c(0, 1, 1, 0, 0, 0, 0)
iso_mode_mod_COL <- c(0, 0, 0, 1, 1, 0, 0)
exp_sector_4 <- c(0, 1, 0, 0, 1, 0, 0)
exp_sector_5 <- c(1, 0, 1, 0, 0, 0, 0)
exp_sector_7 <- c(0, 0, 0, 1, 0, 1, 1)
original <- data.frame(NP, iso_mode_USA, iso_mode_CHN, iso_mode_COL, iso_mode_mod_USA, iso_mode_mod_CHN, iso_mode_mod_CHN, exp_sector_4, exp_sector_5, exp_sector_7)
我想要一个向量,通过名称的开头记录每列的组(例如,NP 形成一个组,iso_mode_ 形成另一个组,exp_sect_ 形成另一个组,依此类推......)。因此,向量看起来像:
vector <- c("1", "2", "2", "2", "3", "3", "3", "4", "4", "4")
关于如何在 dplyr 中执行此操作的任何想法(对于更多变量)?
谢谢你。
解决方案
您可以使用grepl
查找名称并获取职位which
。apply
tt <- paste0("^", unique(sub("_[^_]+$", "_", names(original))), "([^_]+$|$)")
apply(sapply(tt, grepl, names(original)), 1, which)
# [1] 1 2 2 2 3 3 3 4 4 4
推荐阅读
- r - 如何在r中识别成像器库中的黑色
- java - 使用 Fillo 如何读取所有行?
- excel - Excel powerquery自定义自定义列自我参考?
- javascript - 登录或注册后显示一次模式
- package - 使用旧包 GenABEL
- r - ggplot2 将文本设置在所有类别通用的固定位置
- bash - Bash 求幂限制
- elasticsearch - 带有 ElasticsearchSinkConnector 的 Kafka - 是否可以在连接器中定义数据映射?
- c# - 使用 MediaComposition 和 IBasicVideoEffect 从视频文件中获取帧
- php - 为什么 php 舍入这个数字?