【问题标题】:How can I join two dataframes by index in R?如何通过 R 中的索引连接两个数据帧?
【发布时间】:2021-05-10 14:22:16
【问题描述】:

我有两个数据框 CityDFCityIndexDFCityIndexDFCityDF 中列的索引,我从另一个计算中得到。所以 1 是斯德哥尔摩,2 是奥斯陆,3 是哥本哈根。

CityDF <- setNames(data.frame(c("Stockholm", "Oslo", "Copenhagen")),"City")
CityIndexDF <- setNames(data.frame(c("1","2","1","3","2","3","1","2")),"Index")

我希望输出是

    Index City
    1     Stockholm
    2     Oslo
    1     Stockholm
    3     Copenhagen
    2     Oslo
    3     Copenhagen
    1     Stockholm
    2     Oslo

我该怎么做?

【问题讨论】:

    标签: r dataframe indexing


    【解决方案1】:

    奇怪的是,您在数字周围加上引号,因此它们是字符串,但如果我们将它们转换为 as.numeric(),我们可以将它们用作行索引:

    CityIndexDF$City <- CityDF$City[as.numeric(CityIndexDF$Index)]
    CityIndexDF
    #   Index       City
    # 1     1  Stockholm
    # 2     2       Oslo
    # 3     1  Stockholm
    # 4     3 Copenhagen
    # 5     2       Oslo
    # 6     3 Copenhagen
    # 7     1  Stockholm
    # 8     2       Oslo
    

    【讨论】:

      【解决方案2】:

      只需使用您的 col 值作为索引本身

      library(tidyverse)
      
      CityIndexDF %>%
          mutate(city = CityDF[Index,])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        相关资源
        最近更新 更多