如何在r中用only name重命名多个不同名称的列

r1wp621o  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(179)

我使用一个循环来合并几个CSV文件。在每个文件中,都有一列包含一些信息。问题是在某些文件中,这一列被称为“IN FILE”,而在其他文件中,它被称为“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中用only name重命名多个名字不同的列呢?

zxlwwiss

zxlwwiss1#

如果这是你的数据

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
64jmpszr

64jmpszr2#

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

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

确保vector(在〈-之后)包括dataframe的所有列名(以及列名的顺序),包括那些您不想重置名称的列名。

相关问题