返回满足R中多个条件的数据帧行(面板数据随机样本)

时间:2011-11-08 22:37:21

标签: r panel dataframe sample

我希望根据唯一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

任何想法???这太痛苦了。

1 个答案:

答案 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