【问题标题】:Select first 4 rows of a data.frame in R在 R 中选择 data.frame 的前 4 行
【发布时间】:2011-02-09 16:39:00
【问题描述】:

如何选择data.frame 的前 4 行:

              Weight Response
1   Control     59      0.0
2 Treatment     90      0.8
3 Treatment     47      0.1
4 Treamment    106      0.1
5   Control     85      0.7
6 Treatment     73      0.6
7   Control     61      0.2

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    使用索引:

    df[1:4,]
    

    括号中的值可以解释为逻辑、数字或字符(匹配各自的名称):

    df[row.index, column.index]
    

    阅读 help(`[`) 了解有关此主题的更多详细信息,并阅读 R 简介中的 index matrices

    【讨论】:

    • 如果您只需要一列的前四行,这也适用。获取前四个响应值:df[1:4, "Response"].
    【解决方案2】:

    使用head:

    dnow <- data.frame(x=rnorm(100), y=runif(100))
    head(dnow,4) ## default is 6
    

    【讨论】:

    • 您好,如果要获取第 5 到第 7 行怎么办?
    • 您可以使用其他地方指出的“索引”答案。在这种情况下,我通常在 dplyr 中使用 slice 函数。 (行为取决于分组。)
    【解决方案3】:

    对于在 DataFrame 中可以简单地键入

    head(data, num=10L)
    

    例如获得前 10 个。

    对于 data.frame,可以简单地键入

    head(data, 10)
    

    获得前 10 个。

    【讨论】:

    【解决方案4】:

    如果您的行数少于 4 行,您可以使用 head 函数(head(data, 4)head(data, n=4)),它就像一个魅力。但是,假设我们有以下 15 行的数据集

    >data <- data <- read.csv("./data.csv", sep = ";", header=TRUE)
    
    >data
     LungCap Age Height Smoke Gender Caesarean
    1    6.475   6   62.1    no   male        no
    2   10.125  18   74.7   yes female        no
    3    9.550  16   69.7    no female       yes
    4   11.125  14   71.0    no   male        no
    5    4.800   5   56.9    no   male        no
    6    6.225  11   58.7    no female        no
    7    4.950   8   63.3    no   male       yes
    8    7.325  11   70.4    no  male         no
    9    8.875  15   70.5    no   male        no
    10   6.800  11   59.2    no   male        no
    11   6.900  12   59.3    no   male        no
    12   6.100  13   59.4    no   male        no
    13   6.110  14   59.5    no   male        no
    14   6.120  15   59.6    no   male        no
    15   6.130  16   59.7    no   male        no
    

    假设您要选择前 10 行。最简单的方法是data[1:10, ]

    > data[1:10,]
       LungCap Age Height Smoke Gender Caesarean
    1    6.475   6   62.1    no   male        no
    2   10.125  18   74.7   yes female        no
    3    9.550  16   69.7    no female       yes
    4   11.125  14   71.0    no   male        no
    5    4.800   5   56.9    no   male        no
    6    6.225  11   58.7    no female        no
    7    4.950   8   63.3    no   male       yes
    8    7.325  11   70.4    no  male         no
    9    8.875  15   70.5    no   male        no
    10   6.800  11   59.2    no   male        no
    

    但是,假设您尝试检索前 19 行并查看会发生什么 - 您将缺少值

    > data[1:19,]
         LungCap Age Height Smoke Gender Caesarean
    1      6.475   6   62.1    no   male        no
    2     10.125  18   74.7   yes female        no
    3      9.550  16   69.7    no female       yes
    4     11.125  14   71.0    no   male        no
    5      4.800   5   56.9    no   male        no
    6      6.225  11   58.7    no female        no
    7      4.950   8   63.3    no   male       yes
    8      7.325  11   70.4    no  male         no
    9      8.875  15   70.5    no   male        no
    10     6.800  11   59.2    no   male        no
    11     6.900  12   59.3    no   male        no
    12     6.100  13   59.4    no   male        no
    13     6.110  14   59.5    no   male        no
    14     6.120  15   59.6    no   male        no
    15     6.130  16   59.7    no   male        no
    NA        NA  NA     NA  <NA>   <NA>      <NA>
    NA.1      NA  NA     NA  <NA>   <NA>      <NA>
    NA.2      NA  NA     NA  <NA>   <NA>      <NA>
    NA.3      NA  NA     NA  <NA>   <NA>      <NA>
    

    并且使用 head() 函数,

    > head(data, 19) # or head(data, n=19)
       LungCap Age Height Smoke Gender Caesarean
    1    6.475   6   62.1    no   male        no
    2   10.125  18   74.7   yes female        no
    3    9.550  16   69.7    no female       yes
    4   11.125  14   71.0    no   male        no
    5    4.800   5   56.9    no   male        no
    6    6.225  11   58.7    no female        no
    7    4.950   8   63.3    no   male       yes
    8    7.325  11   70.4    no  male         no
    9    8.875  15   70.5    no   male        no
    10   6.800  11   59.2    no   male        no
    11   6.900  12   59.3    no   male        no
    12   6.100  13   59.4    no   male        no
    13   6.110  14   59.5    no   male        no
    14   6.120  15   59.6    no   male        no
    15   6.130  16   59.7    no   male        no
    

    希望对您有所帮助!

    【讨论】:

      【解决方案5】:

      如果有人对dplyr 解决方案感兴趣,它非常直观:

      dt <- dt %>%
        slice(1:4)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-05
        • 2012-10-12
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 2021-04-13
        相关资源
        最近更新 更多