Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用子集从R中的数据集中仅获取前xx个观测值?_R_Regression_Dataset - Fatal编程技术网

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

如何使用子集从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

如果我有一个包含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<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
    的底部。本文详细解释了子集危险的原因,并对其进行了总结