【问题标题】:Subsetting Panel Data in RR中的子集面板数据
【发布时间】:2014-09-12 07:01:29
【问题描述】:

我正在尝试对面板数据集进行子集化,以仅读取每个“区域”的前 855 个观察值。区域列有 65 个不同的区域,每个区域有 1070 个观测值。由此,我想减少数据集以包含所有 65 个区域,但只有它们的前 855 个观察值(相应地减少所有其他变量)。

     Region       Week       VolSales  UnitSales BaseVol  BaseUnits 
1065 Los Angeles 02/01/2011    2004.80  2166.18   1921.53  1934.84         
1066 Los Angeles 02/01/2011    1949.03  1479.03   1700.07  1700.07           
1067 Los Angeles 02/01/2011    5231.11  5904.96   4846.51  4811.38           
1068 Los Angeles 02/01/2011    6267.45  6524.85   4675.77  4328.05           
1069 Los Angeles 02/01/2011    2317.29  2180.61   1795.83  1019.11           
1070 Los Angeles 02/01/2011    3433.70  3493.10   1729.77  2179.09       

我能得到的最接近的方法是使用新变量为每个区域定义数据,然后对其进行子集化,如下所示:

R1 <- subset(data, data$Region == "Los Angeles")
R2 <- subset(data, data$Region == "Chicago")

等等.... 然后服用

Sample1 <- R1[1:855]
Sample2 <- R2[1:855]

然后将其组合成整个数据集,然后按照 Regions 排列回来(按照原始数据集中的排列方式)

FinalDataset &lt;- cbind(Sample1,Sample2)

但是,当然,这不是一种有效的方式,我期待获得一些帮助以更有效地完成它。我希望我正确地解释了这个问题。

【问题讨论】:

    标签: r subset panel-data


    【解决方案1】:

    使用基础 R 的解决方案:

    List = by(data, data$Region, function(x) x[1:855,])
    
    FinalDataset = do.call('rbind', List)
    

    如果你想使用data.table包:

    data = data.table(data)
    FinalDataset = data[,.SD[1:855],by=Region]
    

    【讨论】:

      【解决方案2】:

      使用dplyr

      library(dplyr)
       data %>% 
       group_by(Region) %>% 
       do(head(., n=855))
      

      示例

       set.seed(24)
       data <- data.frame(Region=rep(c("Los Angeles", "Chicago"),each=10), Value=rnorm(20),stringsAsFactors=F)
      
       data%>% group_by(Region) %>% do(head(., n=2))
       #Source: local data frame [4 x 2]
        #Groups: Region
        #
        #       Region      Value
       #1      Chicago -1.3169081
       #2      Chicago  0.5982691
       #3  Los Angeles -0.5458808
       #4  Los Angeles  0.5365853
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 2022-12-29
        • 1970-01-01
        • 2017-10-16
        • 2012-08-24
        • 1970-01-01
        • 2018-10-10
        相关资源
        最近更新 更多