我希望根据唯一ID从面板数据中创建一个随机样本。
例如,如果你从:
开始e = data.frame(id=c(1,1,1,2,2,3,3,3,4,4,4,4), data=c(23,34,45,1,23,45,6,2,9,39,21,1))
你想要一个2个唯一ID的随机样本:
out = data.frame(id=c(1,1,1,3,3,3), data=c(23,34,45,45,6,2))
虽然样本给了我随机的唯一ID
sample( e$id ,2) # give c(1,3)
我无法弄清楚如何使用逻辑调用来返回所有需要的数据。 我尝试了很多东西,包括:
e[ e$id == sample( e$id ,2) ] # only returns 1/2 the data
任何想法???这太痛苦了。
答案 0 :(得分:3)
我不完全确定你的预期结果应该是什么,但是这对你想要做的事情有用吗?
> e[e$id %in% sample(e$id, 2), ]
id data
6 3 45
7 3 6
8 3 2
9 4 9
10 4 39
11 4 21
12 4 1
或许你想要这个:
> e[e$id %in% sample(unique(e$id), 2), ]
id data
1 1 23
2 1 34
3 1 45
9 4 9
10 4 39
11 4 21
12 4 1