【问题标题】:Rename dataframe columns by string matching in R通过R中的字符串匹配重命名数据框列
【发布时间】:2019-08-01 16:18:13
【问题描述】:

我正在遍历一系列 ID,为每个 ID 加载 2 个 csv,并对它们进行一些分析。我需要重命名 2 个 csv 之一的列以匹配另一个的行值。我需要在循环内执行此操作,以便将其应用于每个 id 的 csv。

我尝试过像这样重命名列:

`names(LCC_diff)[2:length(LCC_diff)] <- c("Bare.areas" = "Bare areas",
"Tree." = "Tree ", "Urban.areas" = "Urban areas", 
"Water.bodies" = "Water bodies")`

其中 LCC_diff 是一个数据框,每对中的第一个值是原始列名,第二个是我要分配给该列的名称,但它只是按顺序替换列名,并且不匹配它们.

这是一个问题,因为并非所有列名都需要替换,并且不同 id 的 csv 具有不同顺序的这些列。

如何将原始列名与我想用来替换它们的字符串匹配?

【问题讨论】:

    标签: r for-loop names


    【解决方案1】:

    尝试先重命名它们,如果它们具有相同的名称应该会容易得多。

    library(stringr)
    
    str_replace_all(c("Tree ","Bare areas")," ",".")
    
    
    [1] "Tree."      "Bare.areas"
    

    【讨论】:

    • 这不起作用,因为我需要单独编辑 csv,每次我在 for 循环中加载一个
    • 然后你可以使用list.files()列出所有的csv文件。并使用file.rename() 重命名文件。或者您可以通过重命名列来反向操作。
    • 您好,Yifu Yan,感谢您将我引向正确的方向。我认为如果我改变一些事情,这实际上是有效的,所以它变成:names(LCC_diff)[2:length(LCC_diff)] &lt;- str_replace(names(LCC_diff)[2:length(names(LCC_diff))], fixed("."), " ")
    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2021-09-07
    • 2022-01-10
    • 2021-10-05
    • 2021-05-30
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多