R 基于组和组内ID匹配的行选择
我正在尝试根据另一个组中的值选择行。这是虚拟数据帧R 基于组和组内ID匹配的行选择,r,dplyr,group-by,tidyverse,R,Dplyr,Group By,Tidyverse,我正在尝试根据另一个组中的值选择行。这是虚拟数据帧 das <- data.frame(weigh=c(10,30,15,11,14,50,30,32,34,60,17,31,2,6,66,5,4,20,21,12,8,56,6,19), id =c(123,124,125,126,127,128,1223,1224,1226,1225,1227,1228,123,124,125,126,127,128,1223,1224,1225,1226,1227,
das <- data.frame(weigh=c(10,30,15,11,14,50,30,32,34,60,17,31,2,6,66,5,4,20,21,12,8,56,6,19),
id =c(123,124,125,126,127,128,1223,1224,1226,1225,1227,1228,123,124,125,126,127,128,1223,1224,1225,1226,1227,1228),
label=c("A","A","A","A","A","A","B","B","B","B","B","B"),
category=c(1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3))
但我试图做的是从另一个类别中的同一标签中捕获id值为的行。因此,这个虚拟示例中的预期输出如下所示
weigh id label category
50 128 A 1
15 125 A 1
60 1225 B 1
34 1226 B 1
66 125 A 3
20 128 A 3
56 1226 B 3
8 1225 B 3
一种方法是通过id将数据连接回原始数据:
一种方法是通过id将数据连接回原始数据:
我们可以不用加入
library(dplyr)
das %>%
group_by(category, label) %>%
mutate(flag = weigh == max(weigh)) %>%
group_by(id) %>%
filter(any(flag)) %>%
select(-flag)
# A tibble: 8 x 4
# Groups: id [4]
# weigh id label category
# <dbl> <dbl> <chr> <dbl>
#1 15 125 A 1
#2 50 128 A 1
#3 34 1226 B 1
#4 60 1225 B 1
#5 66 125 A 3
#6 20 128 A 3
#7 8 1225 B 3
#8 56 1226 B 3
我们可以不用加入
library(dplyr)
das %>%
group_by(category, label) %>%
mutate(flag = weigh == max(weigh)) %>%
group_by(id) %>%
filter(any(flag)) %>%
select(-flag)
# A tibble: 8 x 4
# Groups: id [4]
# weigh id label category
# <dbl> <dbl> <chr> <dbl>
#1 15 125 A 1
#2 50 128 A 1
#3 34 1226 B 1
#4 60 1225 B 1
#5 66 125 A 3
#6 20 128 A 3
#7 8 1225 B 3
#8 56 1226 B 3
library(dplyr)
das %>%
group_by(category, label) %>%
mutate(flag = weigh == max(weigh)) %>%
group_by(id) %>%
filter(any(flag)) %>%
select(-flag)
# A tibble: 8 x 4
# Groups: id [4]
# weigh id label category
# <dbl> <dbl> <chr> <dbl>
#1 15 125 A 1
#2 50 128 A 1
#3 34 1226 B 1
#4 60 1225 B 1
#5 66 125 A 3
#6 20 128 A 3
#7 8 1225 B 3
#8 56 1226 B 3