【问题标题】:Re-sample a data frame with panel dimension使用面板维度重新采样数据框
【发布时间】:2013-06-24 11:53:11
【问题描述】:

我有一个包含 2000 个人的数据集。对于每个人 i:2000 ,数据集包含 n 重复的情况。让d 表示这个数据集,d 的每一行都由i 和n 索引。在其他变量中,d 有一个变量pid,它对不同(情况)行中的个人具有相同的值。


考虑到数据的面板性质,我想重新采样d(如引导程序):

  • 有替换,
  • 将每个重采样数据存储为一个数据框

我考虑过使用sample 函数,但无法使其工作。我是 r 的新用户,没有编程技能。

数据集由许多变量组成,但所有变量都有数值。数据集如下。

    pid x   y   z
     1  10  2   -5
     1  12  3   -4.5
     1  14  4   -4
     1  16  5   -3.5
     1  18  6   -3
     1  20  7   -2.5
     2  22  8   -2
     2  24  9   -1.5
     2  26  10  -1
     2  28  11  -0.5
     2  30  12  0
     2  32  13  0.5

前六行是第一人的,pid=1,接下来的性别行,pid=2是第二人的不同观察。

【问题讨论】:

  • 使用head(d) 向我们展示数据集前六行的示例。你也可以使用str(d)来检查d的结构,这样我们就知道哪些列是数字、字符串、因子等。最后,使用dput(d)(或dput(d[1:10,])),这样我们就可以轻松地在您的数据。
  • 我希望这会有所帮助。我无法满足您的所有要求。
  • 您要归档什么样的采样?从您的 2000 人中选择 n 个人并保留所有观察结果?为每个人选择 m 个观察值?两者的结合?
  • 我希望重新采样的数据具有与原始数据相同的长度(个体数量)。那是2000个人。每个人有 n 个观察值,如果一个人在重新采样的数据中,那么他或她的所有 n 个观察值也是如此。

标签: r


【解决方案1】:

这应该适合你:

z <- replicate(100,
               d[d$pid %in% sample(unique(d$pid), 2000, replace=TRUE),],
               simplify = FALSE)

z 的结果将是一个数据框列表,您可以用它做任何事情。

编辑:这有点罗嗦,但会处理重复的行。 replicate 的明显用途是执行给定次数的集合操作(​​在下面的示例中,4 次)。然后我 sample pid 的唯一值(在本例中为这些值中的 3 个,带有替换)并提取与每个采样值对应的 d 的行。 do.call 到 rbind 和 lapply 的组合处理上述代码无法很好处理的重复项。因此,此代码不是生成可能具有不同长度的数据帧,而是为每个采样的pid 生成一个数据帧,然后使用do.call("rbind",...) 在replicate 的每次迭代中将它们重新组合在一起。

z <- replicate(4, do.call("rbind", lapply(sample(unique(d$pid),3,replace=TRUE),
                                     function(x) d[d$pid==x,])),
                                     simplify=FALSE)

【讨论】:

  • 当我运行您的代码时,如下z &lt;- replicate(4, # four resamples d[d$pid %in% sample(unique(d$pid), 3, replace=TRUE),], #for each unique value in d:1-3 simplify = FALSE) 我得到了 4 个重新采样,但并非所有的行数都相同。
  • 这确实如我所愿,谢谢。多一点口头解释就好了。
  • 是的,我添加了一些额外的细节;大多数代码只是通过创建单独的数据帧然后rbind-ing 将它们与do.call 和rbind 一起处理重复。这将适用于任意数量的样本、重复和复制。
猜你喜欢
  • 1970-01-01
  • 2020-01-12
  • 2019-04-15
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2023-04-04
相关资源
最近更新 更多