gpt4 book ai didi

r - R 中面板数据的子集化

转载 作者:行者123 更新时间:2023-12-03 09:24:13 25 4
gpt4 key购买 nike

我正在尝试对面板数据集进行子集化,以仅读取每个“区域”的前 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]

然后将其组合形成整个数据集,并根据区域重新排列(如原始数据集中排列)

FinalDataset <- cbind(Sample1,Sample2 )

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

最佳答案

使用基本 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]

关于r - R 中面板数据的子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24870761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com