如何使用子集从R中的数据集中仅获取前xx个观测值?
如果我有一个包含4137个观测值的数据集,我想在hsperc和sat上只使用前2070个观测值进行colga回归,我该怎么做 我试过这样的方法:如何使用子集从R中的数据集中仅获取前xx个观测值?,r,regression,dataset,R,Regression,Dataset,如果我有一个包含4137个观测值的数据集,我想在hsperc和sat上只使用前2070个观测值进行colga回归,我该怎么做 我试过这样的方法: # loading data GPA2 <- read.table("GPA2.raw", header=TRUE, na.strings=".") # fitting model mfit1 <- lm( formula = colgpa ~ hsperc + sat, data=GPA2, subset=(rownum<207
# loading data
GPA2 <- read.table("GPA2.raw", header=TRUE, na.strings=".")
# fitting model
mfit1 <- lm( formula = colgpa ~ hsperc + sat, data=GPA2, subset=(rownum<2071) )
#加载数据
GPA2一个简单、可重复的示例:
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
或在分析之前执行子集操作:
dat_subset = dat[1:2070,]
lm(A~B, dat_subset)
正如评论者所提到的,选择方案2可能是最好的。一个简单、可重复的例子:
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
或在分析之前执行子集操作:
dat_subset = dat[1:2070,]
lm(A~B, dat_subset)
正如评论者所提到的,选择选项2可能是最好的。您可以使用data=GPA2[1:2070,]
并省略子集
参数。我同意上述观点。如果可能,最好避免使用子集。在哈德利的在线资料中,他提供了一些例子和解释。你可以使用data=GPA2[1:2070,]
省去子集
参数。我同意上述观点。如果可能,最好避免使用子集。在哈德利的在线资料中,他有关于为什么的例子和解释。哇,感谢所有的答案!我会尽量利用你的建议!!我不明白使用子集有什么“危险”?使用head(dat,2070)
将是另一个好的解决方案。稍后,如果要使用的行数是一个变量,head(dat,x)
将在x>nrow(dat)
时执行“正确”操作:它将返回完整的dat
,而dat[1:x,]
将出错。。。。或者更确切地说,它会用NA
s(另一个糟糕的结果)填充dat
的底部。为什么子集是危险的,在本文中有详细的解释,并在本Wow中进行了总结,感谢所有的答案!我会尽量利用你的建议!!我不明白使用子集有什么“危险”?使用head(dat,2070)
将是另一个好的解决方案。稍后,如果要使用的行数是一个变量,head(dat,x)
将在x>nrow(dat)
时执行“正确”操作:它将返回完整的dat
,而dat[1:x,]
将出错。。。。或者更确切地说,它将用NA
s(另一个坏结果)填充dat
的底部。本文详细解释了子集危险的原因,并对其进行了总结