通过比较R中一列中的值来选择行
我有一个数据框,看起来像:通过比较R中一列中的值来选择行,r,filter,group-by,dplyr,R,Filter,Group By,Dplyr,我有一个数据框,看起来像: n4= sector turb dist 1 sector1 T02 828.66 2 sector1 T04 1114.58 3 sector1 T05 1012.22 4 sector2 T03 992.64 5 sector2 T05 1012.22 6 sector2 T06 1158.38 7 sector3 T03 992.64 8 secto
n4=
sector turb dist
1 sector1 T02 828.66
2 sector1 T04 1114.58
3 sector1 T05 1012.22
4 sector2 T03 992.64
5 sector2 T05 1012.22
6 sector2 T06 1158.38
7 sector3 T03 992.64
8 sector12 T02 828.66
9 sector12 T04 1114.58
我希望保留具有唯一扇区名称的行,并且措施是在dist列中保留具有最小值的行:
sector turb dist
1 sector1 T02 828.66
4 sector2 T03 992.64
7 sector3 T03 992.64
8 sector12 T02 828.66
我知道我必须根据行业对他们进行分组:
result = n4 %>%
dplyr::group_by(sector)
但是使用select或filter命令并没有像我尝试的那样起作用:
result = n4 %>%
dplyr::group_by(sector)%>%
dplyr::select(which.min(dist))
你知道我该怎么做吗?我们需要
slice
而不是select
来对行进行子集划分。select
功能用于选择数据集的列。如果“扇区”的顺序应与输入数据中“扇区”的出现顺序相同,则将该列更改为输入数据顺序中指定了级别的系数
n4 %>%
dplyr::group_by(sector = factor(sector, levels = unique(sector)))%>%
dplyr::slice(which.min(dist))
# A tibble: 4 x 3
# Groups: sector [4]
# sector turb dist
# <fct> <chr> <dbl>
#1 sector1 T02 829.
#2 sector2 T03 993.
#3 sector3 T03 993.
#4 sector12 T02 829.
数据
n4我们需要slice
而不是select
来对行进行子集划分。select
功能用于选择数据集的列。如果“扇区”的顺序应与输入数据中“扇区”的出现顺序相同,则将该列更改为输入数据顺序中指定了级别的系数
n4 %>%
dplyr::group_by(sector = factor(sector, levels = unique(sector)))%>%
dplyr::slice(which.min(dist))
# A tibble: 4 x 3
# Groups: sector [4]
# sector turb dist
# <fct> <chr> <dbl>
#1 sector1 T02 829.
#2 sector2 T03 993.
#3 sector3 T03 993.
#4 sector12 T02 829.
数据
n4您可以使用filter
代替select
并作为slice
> n4 %>%
dplyr::group_by(sector)%>%
dplyr::filter(dist==min(dist))
# A tibble: 4 x 3
# Groups: sector [4]
sector turb dist
<fct> <fct> <dbl>
1 sector1 T02 829.
2 sector2 T03 993.
3 sector3 T03 993.
4 sector12 T02 829.
您可以选择其他选项来完成此任务。您可以使用过滤器
而不是选择
,也可以使用切片
> n4 %>%
dplyr::group_by(sector)%>%
dplyr::filter(dist==min(dist))
# A tibble: 4 x 3
# Groups: sector [4]
sector turb dist
<fct> <fct> <dbl>
1 sector1 T02 829.
2 sector2 T03 993.
3 sector3 T03 993.
4 sector12 T02 829.
您可以选择其他选项来完成此任务。谢谢您的回复,但此处扇区列的排序更改为:sector1、sector12、sector2、sector3
,如何修复该列?@AliHadjihoseini一个选项是将其转换为指定了级别的因子
列。更新了帖子谢谢您的回复,但是这里扇区列的排序更改为:sector1、sector12、sector2、sector3
,我如何修复这个问题?@AliHadjihoseini一个选项是将其转换为指定了级别的因子
列。更新了帖子
> aggregate(.~sector, data=n4, min)
sector turb dist
1 sector1 1 828.66
2 sector12 1 828.66
3 sector2 2 992.64
4 sector3 2 992.64