首页 > 解决方案 > 重复唯一的列名

问题描述

我有一个包含 9 列(V1、V2....V9)的数据集。我想标记每一列:Cat_1、Mouse_1、Chicken_1,用“_”分隔的唯一 ID 号重复这些名称。例如,从第四列开始 - Cat_2、Mouse_2、Chicken_2 等等。如何才能做到这一点?

标签: r

解决方案


我们可以用 来创建一个分组索引gl,用于paste连接动物名称的向量并将其分配回数据集

names(df1) <- paste0(c("Cat_", "Mouse_", "Chicken_"), 
           as.integer(gl(ncol(df1), 3, ncol(df1))))

输出

df1
#  Cat_1 Mouse_1 Chicken_1 Cat_2 Mouse_2 Chicken_2 Cat_3 Mouse_3 Chicken_3
#1     7       3         9     8       8         1     3       7         2
#2     3       8         8     1       2         5     1       1         4
#3     8       6         7     5       1         4     3       6         3
#4     7       9         8     5       5         6     8       7         6
#5     2       4         1     5       2         6     6       1         3

或另一种选择make.uniquerep

names(df1) <- make.unique(rep(c("Cat", "Mouse", "Chicken"), 
               length.out = ncol(df1)))

注意:两种解决方案都适用于任意数量的列

数据

set.seed(24)
df1 <- as.data.frame(matrix(sample(1:9, 9 *5, replace = TRUE), ncol = 9))

推荐阅读