如何在 r 中仅通过名称重命名具有不同名称的多个列

问题描述 投票:0回答:2

我使用一个循环来合并几个 CSV 文件。在每个文件中,有一列包含一些信息。问题是在某些文件中,此列称为“IN FILE”,而在其他文件中,它称为“IN.FILE”。或“在文件中*”。我想通过重命名“IN.FILE”中的所有这些列来使事情变得同质

我试着这样做:

 if (grepl("IN FILE|IN.FILE.|IN FILE*", first_line)) {
colnames(df)[colnames(df) == "IN FILE"|"IN.FILE."|"IN FILE*"] <- "IN.FILE" }

在这里,我尝试用正确的名称替换所有错误的名称,但 colname 函数不接受多个参数。那么,如何通过 r 中的名称重命名具有不同名称的多个列?

r multiple-columns rename
2个回答
0
投票

如果这是你的数据

df
  IN FILE IN.FILE. IN_FILE col IN FILE
1       1        1       1   1  1    1
2       2        2       2   2  2    2
3       3        3       3   3  3    3

只重命名那些你想通过

grep

colnames(df)[grep("IN.*FILE", colnames(df))] <- "IN.FILE"

df
  IN.FILE IN.FILE IN.FILE col IN FILE
1       1       1       1   1  1    1
2       2       2       2   2  2    2
3       3       3       3   3  3    3

但是你有重复的列名。您可以使用

来更正它
data.frame(df, check.names = T)
  IN.FILE IN.FILE.1 IN.FILE.2 col IN FILE
1       1         1         1   1  1    1
2       2         2         2   2  2    2
3       3         3         3   3  3    3

-1
投票

读取 excel 文件后,您可以使用基本 R 函数“names”重置列的名称

names(df) <- c('column_1', 'column_2', 'column_3')

确保向量(在<- ) includes all the column names of the dataframe (as well as the order of the column names), including those that you don't want to reset the name.

之后
© www.soinside.com 2019 - 2024. All rights reserved.