【问题标题】:How do I combine multiple rows of data in R while still keeping row names?如何在 R 中组合多行数据,同时仍保留行名?
【发布时间】:2020-08-19 04:11:34
【问题描述】:

我有 12 个不同的数据框,看起来像这样。

所有 12 个与一行数据共享相同的列标题。

第一列根据团队名称略有不同,例如:(HPMapUsageATL2、HPMapUsageCHI2 等)。我希望将所有这些组合在一起,因此我将有 12 个不同的行以及它们的所有标题。

现在我正在使用这个代码:

MapUsage <- Reduce(function(...) merge(..., all=TRUE), list(HPMapUsageATL2, HPMapUsageCHI2, HPMapUsageDAL2,
                                                            HPMapUsageFLA2, HPMapUsageLA2, HPMapUsageLondon2, 
                                                            HPMapUsageMinnesota2, HPMapUsageNewYork2, HPMapUsageOptic2,
                                                            HPMapUsageParis2, HPMapUsageSeattle2, HPMapUsageToronto2))

除了保留行名之外,这就是我希望它做的事情。它返回这样的数据框:

如何让代码返回原始行标题而不是编号?例如:HPMapUsageATL2

【问题讨论】:

    标签: r


    【解决方案1】:

    一个选项是在执行merge 之前将row.names 转换为列。将以“HPMapUsage”开头的对象全部放入listmget,循环list (lapply),使用transform 创建一个新列,然后应用Reduce 和@987654329 @上list

    lst1 <- lapply(mget(ls(pattern = '^HPMapUsage')) , function(dat)
            transform(dat, rn = row.names(dat))
     out <- Reduce(function(...) merge(..., all = TRUE), lst1)
    

    或者这可以通过tidyverse来完成

    library(dplyr)
    library(tibble)
    library(purrr)
    mget(ls(pattern = '^HPMapUsage')) %>%
          map(~ .x %>%
                     rownames_to_column('rn')) %>%
          reduce(full_join)
    

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 2013-05-23
      • 2013-05-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2010-09-10
      相关资源
      最近更新 更多