1

我和我的同事轮流输入数据。一天我做,下周别人做,我们总是一次输入 50 个观察值(到 Excel 表中)。所以我可以很确定我输入了从 101 到 150 和 301 到 350 的案例。然后我们将数据读入 R 来处理它。如何只选择我输入的案例?

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

我检查了几个关于使用 R 子集数据的文档,还尝试了类似的东西

data<-data[101:150 & 301:350,]

但没有用。如果有人能指导我获得更全面的指南来回答这个问题,我将不胜感激。

4

1 回答 1

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)

但我会推荐稍微长一点的公式,因为这样更容易理解。

于 2012-12-27T16:34:55.110 回答