我有一个由15个不同ID分散的近50,000行的df(每个ID有数千个观察值) . df看起来像:
ID Year Temp ph
1 P1 1996 11.3 6.80
2 P1 1996 9.7 6.90
3 P1 1997 9.8 7.10
...
2000 P2 1997 10.5 6.90
2001 P2 1997 9.9 7.00
2002 P2 1997 10.0 6.93
我想为每个ID获取500个随机行(对于P1为500,对于P2为500,....)并创建一个新的df . 我尝试:
new_df<-df[df$ID %in% sample(unique(dfID),500),]
但它随机需要一个ID,而每个ID需要500个随机行 .
6 回答
试试这个:
这可以作为
dplyr
中的sample_n
函数使用:这是基地R的一种方法 .
首先,要使用的先决条件样本数据:
二,抽样:
sampling
包中还有strata
,当您想从每个组中采样不同的尺寸时,这很方便:一个方法,如果ID为<500 . 这里我使用了mtcars集:
虽然这不是很优雅的解决方案,但它可能会起作用 .