gpt4 book ai didi

r - 在R中唯一化重复的列名

转载 作者:行者123 更新时间:2023-12-03 20:17:28 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to make a unique set of names from a vector of strings?

(1 个回答)


4年前关闭。




所以我加载了一个包含重复列名的 Excel 文件。每次重复列名时,我想添加一个后缀。所以:

problem_df <- data.frame(A = rep(1, 5), B = rep(2, 5), A = rep(3, 5), B = rep(4, 5), A = rep(5, 5))
solution_df <- data.frame(A = rep(1, 5), B = rep(2, 5), A_1 = rep(3, 5), B_1 = rep(4, 5), A_2 = rep(5, 5))

或者列名后缀可以是“_2”和“_3”。

最佳答案

我们可以使用 make.unique其中也有 sep争论

make.unique(c("A", "B", "A", "B", "A"), sep="_")
#[1] "A" "B" "A_1" "B_1" "A_2"

在我们的“problem_df”中, data.frame通话使用 check.names = TRUE , 调用 make.names调用 make.unique默认情况下 sep. .

在检查 data.frame ,它在从第 124 行开始的代码块中
  if (check.names) {
if (fix.empty.names)
vnames <- make.names(vnames, unique = TRUE) ###
else {
nz <- nzchar(vnames)
vnames[nz] <- make.names(vnames[nz], unique = TRUE) ###
}
}
names(value) <- vnames

一种选择是使用 check.names = FALSE然后用 make.unique 分配列名和 sep="_"
problem_df <- data.frame(A = rep(1, 5), B = rep(2, 5), A = rep(3, 5),
B = rep(4, 5), A = rep(5, 5), check.names = FALSE)
names(problem_df) <- make.unique(names(problem_df), sep="_")

或使用 sub假设数据集对象是用 .\\d+ 创建的作为重复名称的列名
sub("\\.", "_", names(problem_df))
#[1] "A" "B" "A_1" "B_1" "A_2"

关于r - 在R中唯一化重复的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47595209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com