3
我对两个跨越四年的个体重复观察。我怎样才能随机选择一年中的所有观察结果?从分组数据中随机选择一组观察值(行)
set.seed(123)
dat <- data.frame(IndID = rep(c("AAA", "BBB"), each = 100),
Year = sample(c("2001", "2002", "2003", "2005"),200, replace = T),
Value = rnorm(200))
dat$Value[dat$IndID == "AAA" & dat$Year == "2002"] <- NA
dat$Value[dat$IndID == "BBB" & dat$Year == "2005"] <- NA
注意,个人年组合之间的不同的样本量。
table(dat$IndID, dat$Year)
2001 2002 2003 2005
AAA 26 27 20 27
BBB 20 30 30 20
另请注意,并非所有年份都有数据。
dat %>% group_by(IndID, Year) %>%
summarise(NoDat = sum(is.na(Value))) %>%
as.data.frame()
IndID Year NoDat
1 AAA 2001 0
2 AAA 2002 27
3 AAA 2003 0
4 AAA 2005 0
5 BBB 2001 0
6 BBB 2002 0
7 BBB 2003 0
8 BBB 2005 20
我已经看到了一些有用的例子为一组中选择特定行(即顶部,最后,n个随机等),但我不连接有关如何在组内选择的所有行的点点滴滴。在这里,我想要为每个人随机选择一年的所有数据,最好是dplyr
。随机的年份应该是特定于每个人在不同的时间段有和没有数据。随机年份需要与收集到的观察结果一致,因此在个体之间会有所不同。
我没有想过在'dplyr'之外工作。我已经为这个问题和数据集增加了具体内容,特别是在某些年份增加了“NA”。我需要每个人的随机年份不同。光滑的 –
。也可以将第2行更改为'过滤器(年份== sample(年份[!is.na(Value)],1))',用'NA'过滤掉年份。 –
哦,是的。好点,因为我正在采样具有不均匀样本大小的向量,所以概率将不相等。这个例子没什么问题,但非常感谢评论。 –