【问题标题】:How to construct panel data data frame in R from individual variables efficiently如何有效地从单个变量构建 R 中的面板数据数据框
【发布时间】:2021-05-22 12:58:01
【问题描述】:

我想在 R 中构建面板数据。我知道原则上该怎么做,但不知道如何有效地做。

我想要的结果如下:

state     city
delta     A
delta     B
delta     C
gamma     D
gamma     E
...
omega     X

我有一个包含城市的各个州的变量:

delta <- c("A", "B", "C") 
gamma <- c("F", "E)
...

我知道我可以简单地使用:

state <- c("delta", "delta", "delta", "gamma" ... )
city <- c("A", "B", "C", "D" ...)

df <- data.frame(state, city)

但鉴于我有大量的州和城市,使用上述方法会非常耗时。

有没有更有效的方法可以将变量delta、gamma .... 以某种方式直接组合到数据帧中?

【问题讨论】:

    标签: r dataframe merge


    【解决方案1】:

    你可以使用stack -

    delta <- c("A", "B", "C") 
    gamma <- c("F", "E")
    
    stack(dplyr::lst(delta, gamma))
    
    #  values   ind
    #1      A delta
    #2      B delta
    #3      C delta
    #4      F gamma
    #5      E gamma
    

    【讨论】:

      【解决方案2】:

      将所有对象名称收集到一个列表lst 中,然后执行以下操作。我清空了当前文件夹,然后继续。

      delta <- c("A", "B", "C")
      gamma <- c("F", "E")
      
      lst <- ls()
      library(tidyverse)
      map_df(lst, ~get(.x) %>% as.data.frame() %>% setNames('City') %>%
            mutate(State = .x))
      #>   City State
      #> 1    A delta
      #> 2    B delta
      #> 3    C delta
      #> 4    F gamma
      #> 5    E gamma
      

      由reprex package (v2.0.0) 于 2021 年 5 月 22 日创建

      【讨论】:

        【解决方案3】:

        我们可以使用mget 和stack

        stack(mget(c('delta', 'gamma')))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-15
          • 1970-01-01
          • 2021-07-27
          • 1970-01-01
          • 2020-04-17
          • 2015-08-02
          • 1970-01-01
          • 2019-07-20
          相关资源
          最近更新 更多