【问题标题】:Equal size subset of a data frame in R [duplicate]R中数据帧的相等大小的子集[重复]
【发布时间】:2017-03-29 14:20:19
【问题描述】:

我有一个这样的数据框:

     A  B C  D  E
e1   4  3 2  3 13
e2  21 17 5 12 19
e3  13  5 4 12  9
e4  30 18 7  7 30
e5   6 20 1  1 11
e6  16 12 6  8 23
e7  22 16 6  6 22
e8   2 11 1  2 11
e9   5 15 5  0 26
e10 21 19 6  2 22
e11 14 20 6  6 21

并且给定一个数字 X,如果想要做 X 行大小的这个数据框的子集。比如il X = 2,我想要e1+e2、e3+e4等。

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    你可以像这样使用split。然后,您可以像这样访问列表元素:df1[[1]]

    df1 <- read.table(text="row     A  B C  D  E
    e1   4  3 2  3 13
    e2  21 17 5 12 19
    e3  13  5 4 12  9
    e4  30 18 7  7 30
    e5   6 20 1  1 11
    e6  16 12 6  8 23
    e7  22 16 6  6 22
    e8   2 11 1  2 11
    e9   5 15 5  0 26
    e10 21 19 6  2 22
    e11 14 20 6  6 21",header=TRUE,stringsAsFactors=FALSE)
    
    n <- 2
    split(df1, rep(1:(nrow(df1)/n+nrow(df1)%%n),each=n))
    $`1`
      row  A  B C  D  E
    1  e1  4  3 2  3 13
    2  e2 21 17 5 12 19
    
    $`2`
      row  A  B C  D  E
    3  e3 13  5 4 12  9
    4  e4 30 18 7  7 30
    
    $`3`
      row  A  B C D  E
    5  e5  6 20 1 1 11
    6  e6 16 12 6 8 23
    
    $`4`
      row  A  B C D  E
    7  e7 22 16 6 6 22
    8  e8  2 11 1 2 11
    
    $`5`
       row  A  B C D  E
    9   e9  5 15 5 0 26
    10 e10 21 19 6 2 22
    
    $`6`
       row  A  B C D  E
    11 e11 14 20 6 6 21
    

    【讨论】:

    • 我没有意识到这是重复的,但感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多