【问题标题】:split dataframe by row number in R在R中按行号拆分数据帧
【发布时间】:2014-11-25 16:49:23
【问题描述】:

这可能真的很简单,但我找不到解决方案:

df <- data.frame(replicate(10,sample(0:1,10,rep=TRUE)))

v <- c(3, 7)

有没有一种优雅的方法可以在 v 中指定的行号处将此数据框拆分为(列表的)三个元素?

【问题讨论】:

  • 第 3 行和第 7 行应该去哪里?

标签: r split


【解决方案1】:

假设行 1&amp;2 进入第一个拆分,3,4,5,6 进入第二个,7 to nrow(df) 进入最后一个

 split(df, cumsum(1:nrow(df) %in% v))

但如果1:3 行在第一个拆分中,则出现4:7,然后在第三个8 to nrow(df)

  split(df, cumsum(c(TRUE,(1:nrow(df) %in% v)[-nrow(df)])) )

或者正如 @James 在 cmets 中提到的那样,

  split(df, cumsum(1:nrow(df) %in% (v+1)))

【讨论】:

  • 第二个解释用(v+1) 可能更容易。
【解决方案2】:

另一种方式:

split(df, findInterval(1:nrow(df), v))

对于替代解释,您可以使用:

split(df, cut(1:nrow(df), unique(c(1, v, nrow(df))), include.lowest=TRUE))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多