选择每组的前n个观察值

时间:2012-12-27 16:11:29

标签: r

我和我的同事轮流输入数据。有一天,我做了,下周其他人做了,我们总是一次输入50个观察结果(进入Excel表格)。所以我可以非常肯定我从101到150以及301到350进入了案例。然后我们将数据读入R中以便使用它。如何只选择我输入的案例?

现在我知道我可以通过复制excel表来做到这一点,但是,我想知道它在R中是否可行?

我检查了几个关于使用R对数据进行子集化的文档,还尝试过像

这样的事情
data<-data[101:150 & 301:350,]

但没有奏效。如果有人能引导我找一个更全面的指导来回答这个问题,我感激不尽。

1 个答案:

答案 0 :(得分:4)

您提供的具体示例的答案是

data[c(100:150,300:350),] 

您能更具体地了解您想要的案例吗?它是每100个中的前50个,或者每300个中的前50个,还是......?要获取每个n案例的第一个m的索引,您可以使用类似

的内容
c(outer(0:4,seq(1,100,by=10),"+"))

(此处n = 5,m = 10); outer是一个广义的外部产品。替代(可能更直观)的解决方案将使用rep,例如

rep(0:4,10) + rep(seq(1,100,by=10),each=5)

因为R会在必要时自动回收向量,您实际上可以将其缩短为:

0:4 + rep(seq(1,100,by=10),each=5)

但我建议稍微长一点的配方更容易理解。