【问题标题】:How do I rename a single column in multiple dataframes to the name of the dataframe in which they reside in R?如何将多个数据框中的单个列重命名为它们在 R 中所在的数据框的名称?
【发布时间】:2019-11-06 18:59:51
【问题描述】:

我目前正在尝试重命名多个数据框中的单个列以匹配 R 中的数据框名称。

我在网站上看到了一些与我正在尝试做的类似的问题/解决方案,但似乎没有一个是动态地做到这一点的。我有超过 45 个数据框需要在其中重命名一列,因此手动输入每个单独的名称是可行的,但很耗时。

Dataframe1 <- column
Dataframe2 <- column
Dataframe3 <- column


I want it to look like this:
Dataframe1 <- Dataframe1
Dataframe2 <- Dataframe2
Dataframe3 <- Dataframe3


The ultimate goal is to have a master dataframe with columns Dataframe1, Dataframe2, and Dataframe3

【问题讨论】:

    标签: r dataframe naming


    【解决方案1】:

    我们可以将所有数据集放入list,并在list 中立即重命名

    lst1 <- lapply(mget(ls(pattern = "Dataframe\\d+")), function(x) {
                 names(x)[5] <- "newcol"
                 x})
    

    更新

    如果我们用不同的名称重命名不同数据集中的列,则创建一个与每个“Dataframe”列名对应的列名向量

    nm1 <- c("col5A", "col5B", "col5C", ..., "col5Z")
    lst2 <- Map(function(x) {names(x)[5] <- y; x}, 
             mget(ls(pattern = "Dataframe\\d+")),
               nm1)
    

    在上面的代码中,我们将第 5 列重命名为“newcol”。


    也可以使用tidyverse完成

    library(dplyr)
    library(purrr)
    map(mget(ls(pattern = "Dataframe\\d+")), ~ .x %>%
                rename_at(5, ~ "newcol"))
    

    【讨论】:

    • 谢谢,我玩过这个,但问题是我需要将每个列重命名为不同的名称。所以我希望列的名称现在是数据框的名称。换句话说,df1 将有一个名为 df1 的列,df2 将有一个名为 df2 的列,依此类推。有没有办法遍历数据框列表,识别数据框名称并将该数据框中的列重命名为相同的名称?
    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2018-12-21
    • 2019-01-10
    • 2015-12-29
    相关资源
    最近更新 更多