例,它类似于您所提供的数据,有需要的只是相关行的操作。
set.seed(1)
df <- data.frame(ID=c(rep(2122051,20),rep(2122052,20)),
DC=as.integer(runif(40)*100),
rank=rep(1:20,2),
stringsAsFactors=F)
df$DC[c(10,30)] <- as.integer(15001)
我存储每个位置的rank
-1,其中DC==15001
作为载体
positions <- df$rank[df$DC==15001]
[1] 9 9
我用tidyverse
map2
:这应该与自己的数据(给你出什么)工作存储rank
小于每个组的positions
中指定的条目。
library(tidyverse)
df1 <- df %>%
group_by(ID) %>%
nest() %>%
mutate(data = map2(data, 1:length(unique(df$ID)), ~head(.x,positions[.y]))) %>%
unnest(data)
输出
ID DC rank
1 2122051 26 1
2 2122051 37 2
3 2122051 57 3
4 2122051 90 4
5 2122051 20 5
6 2122051 89 6
7 2122051 94 7
8 2122051 66 8
9 2122051 62 9
10 2122051 15001 10
11 2122052 93 1
12 2122052 21 2
13 2122052 65 3
14 2122052 12 4
15 2122052 26 5
16 2122052 38 6
17 2122052 1 7
18 2122052 38 8
19 2122052 86 9
20 2122052 15001 10
欢迎SO。请看看[如何提出一个很好的重现R问题](https://stackoverflow.com/q/5963269/3250126)。分享你的数据(**不是**图片,而是使用'dput()')的明文和你已经试过的代码。 – loki
group_by是什么意思?因为在你预期的结果中,我只是看到你订购了它? –
对于给定的“ID”,我有很多条目。所以我想忽略那些等级高于“15001”的特定“ID”的行 - 用黄色突出显示。 –