我有一个data.table,其中包含自动生成的列名.这些名称的形式为:

N.x.y. z

其中N是一个字符(字面意思是N),其余变量是整数.

我还有一个.csv,它将x的迭代与有意义的字符串关联起来.如下所示:

X Name
1 Model
3 Mileage

我想做的是以以下格式重新生成列名:

N.

我试着先提取列名,比如

thefile = fread('filepath')

xx <- colnames(thefile)

colindex <- read.csv('the other file path')
colindex[,1] <- paste0('N.', colindex[,1], '.') #Converting x to N.x.

我用grepl,replace_at把字符串分割成'."

推荐答案

read.table(text = "X    Name
                   1    Model
                   3    Mileage", 
           header = T, stringsAsFactor = FALSE) -> colindex


df1 <- data.frame(`N.1.2.3` = c(1,2), `N.3.1.2` = c(6,5), 
                  `N.1.3.1` = c(3, 4), `N.3.2.2` = c(8, 7))

df1
#>   N.1.2.3 N.3.1.2 N.1.3.1 N.3.2.2
#> 1       1       6       3       8
#> 2       2       5       4       7

names_split <-  as.data.frame(strsplit(names(df1), "\\."))
names_split[2,] <-  colindex[match(names_split[2,], colindex$X), "Name"]
names(df1) <- apply(names_split, 2, paste, collapse = ".")

df1
#>   N.Model.2.3 N.Mileage.1.2 N.Model.3.1 N.Mileage.2.2
#> 1           1             6           3             8
#> 2           2             5           4             7

创建于2024-03-18年第reprex v2.0.2

R相关问答推荐

使用Shiny组合和显示复制和粘贴的数据

如何根据包含相同值的某些列获取总额

更新合适的R mgcv::bam模型报告无效类型(关闭).'';错误

整数成随机顺序与约束R?

在某些栏和某些条件下,替换dfs列表中的NA

如何使用tryCatch执行语句并忽略警告?

计算满足R中条件的连续列

在ggplot2的框图中绘制所有级别的系数

如何指定我的函数应该查找哪个引用表?

合并后返回列表的数据帧列表

如何使这些react 表对象相互独立?

删除字符串R中的重复项

避免在图例中显示VLINS组

在ggploy中创建GeV分布时出错

如何在AER::ivreg中指定仪器?

将数据从一列转换为按组累计计数的单个虚拟变量

具有自定义仓位限制和计数的GGPLATE直方图

如果极点中存在部分匹配,则替换整个字符串

如何在GGPlot中控制多个图例和线型

根据小时-分钟列创建年-月-日序列