【问题标题】:subset data frame within group in RR中组内的子集数据框
【发布时间】:2017-11-07 18:04:12
【问题描述】:

我有一个这样的数据框

ID <- c(1)
Rank <- c(1,2,3,1,2)
Val <- c(10,20,30,40,50)

df <- data.frame(ID,Rank,Val)
df

  ID Rank Val
1  1    1  10
2  1    2  20
3  1    3  30
4  1    1  40
5  1    2  50

在每个 ID 中,如何对数据帧进行子集化,以便我有两个不同的帧

df1:

  ID Rank Val
1  1    1  10
2  1    2  20
3  1    3  30

df2:

  ID Rank Val
4  1    1  40
5  1    2  50

每个 ID 的总长度可能会有所不同。因此,有时我的排名可能像1,2,1,2。在这种情况下,两个帧将是 (1,2) 和 (1,2)

【问题讨论】:

标签: r subset


【解决方案1】:

我们根据 'Rank' 列的相邻元素之间的差异创建f,创建一个逻辑vector,并在此基础上使用cumsumsplit 将其转换为数字

split(df, cumsum(c(TRUE, diff(df$Rank) < 0)))

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2021-12-16
    • 2013-09-27
    • 2018-10-06
    • 2022-01-09
    相关资源
    最近更新 更多