如何使用子集仅从R中的数据集中获取第一个xx观测值?

时间:2012-10-18 09:26:12

标签: r regression dataset

如果我有一个包含4137个观测数据的数据集,并且我想在hsperc上进行colga回归并且仅使用前2070个观测值进行坐标,我该怎么办?

我尝试过类似的事情:

# loading data
GPA2 <- read.table("GPA2.raw", header=TRUE, na.strings=".")

# fitting model 
mfit1 <- lm( formula = colgpa ~ hsperc + sat, data=GPA2, subset=(rownum<2071) )

但使用subset的{​​{1}}失败了。有什么建议??

我没有一个计算行数的变量,我有这个吗?在那种情况下,我该怎么做?

1 个答案:

答案 0 :(得分:5)

一个简单,可重复的例子:

dat = data.frame(A = runif(100), B = runif(100))
lm(A~B, dat)

这失败了,你发现:

> lm(A~B, dat, subset = (rownum < 50))
Error in eval(expr, envir, enclos) : object 'rownum' not found

这是因为您的数据中没有rownum列。有两种解决方案:

  1. 添加rownum列:

    dat[["rownum"]] = 1:nrow(dat)
    
  2. 或者在分析之前执行子集操作:

    dat_subset = dat[1:2070,]
    lm(A~B, dat_subset)
    
  3. 正如评论者提到的那样,选择2可能是最好的。