R中两个变量的滤波

R中两个变量的滤波,r,R,我有一个数据集,有57个位置“家”,每个位置我有10个其他位置“气象站”,按距离以英里为单位排列。然后我有一个列,有一个象限,气象站在房子周围,所以1-4。 我试着用R写代码,取最近的气象站和它的象限,然后在另一个象限中取下一个最近的,在另一个象限中取第三个。因此,我有一个三角形,基于最近的站 loc station nearness quadrant 1 Abilene-KS SALINA MUNICIPAL AIRP

我有一个数据集,有57个位置“家”,每个位置我有10个其他位置“气象站”,按距离以英里为单位排列。然后我有一个列,有一个象限,气象站在房子周围,所以1-4。 我试着用R写代码,取最近的气象站和它的象限,然后在另一个象限中取下一个最近的,在另一个象限中取第三个。因此,我有一个三角形,基于最近的站

    loc           station                   nearness  quadrant 
1   Abilene-KS   SALINA MUNICIPAL AIRPORT       1         2
2   Abilene-KS   MARSHALL ARMY AIRFIELD         2         1
3   Abilene-KS   MULTI PURPOSE RANGE            3         1
4   Abilene-KS   MANHATTAN REGIONAL AIRPORT     4         3
5   Abilene-KS   MANHATTAN 6 SSW                5         1 
6   Abilene-KS   BLOSSER MUNICIPAL AIRPORT      6         4
7   Abilene-KS   NEWTON-CITY-COUNTY AIRPORT     7         1
8   Abilene-KS   EMPORIA MUNICIPAL AIRPORT      8         2 
9   Abilene-KS   HUTCHINSON MUNICIPAL ARPT      9         4
10  Abilene-KS   COLONEL JAMES JABARA ARPT      10        3
11  Archbold-OH  SALINA MUNICIPAL AIRPORT       1         2 
12  Archbold-OH  MARSHALL ARMY AIRFIELD         2         1
13  Archbold-OH  MULTI PURPOSE RANGE            3         3
14  Archbold-OH  MANHATTAN REGIONAL AIRPORT     4         1
15  Archbold-OH  MANHATTAN 6 SSW                5         4   
16  Archbold-OH  BLOSSER MUNICIPAL AIRPORT      6         4
17  Archbold-OH  NEWTON-CITY-COUNTY AIRPORT     7         2
18  Archbold-OH  EMPORIA MUNICIPAL AIRPORT      8         1
19  Archbold-OH  HUTCHINSON MUNICIPAL ARPT      9         3
20  Archbold-OH  COLONEL JAMES JABARA ARPT      10        2
我希望我能说,我有一些代码来显示我已经尝试了什么,但一切都让我一无所获,所以我迷路了。有什么想法吗

对于这两个位置,我希望使用

    loc           station                   nearness  quadrant 
1   Abilene-KS   SALINA MUNICIPAL AIRPORT       1         2
2   Abilene-KS   MARSHALL ARMY AIRFIELD         2         1
3   Abilene-KS   MANHATTAN REGIONAL AIRPORT     4         3
4   Archbold-OH  SALINA MUNICIPAL AIRPORT       1         2 
5   Archbold-OH  MARSHALL ARMY AIRFIELD         2         1
6   Archbold-OH  MULTI PURPOSE RANGE            3         3

使用
dplyr
,您可以执行以下操作:

library(dplyr)
df %>% 
distinct(loc,quadrant,.keep_all=T) %>%
group_by(loc) %>%
top_n(-3,nearness)
这将返回:

          loc                    station nearness quadrant
        <chr>                      <chr>    <int>    <int>
1  Abilene-KS   SALINA MUNICIPAL AIRPORT        1        2
2  Abilene-KS     MARSHALL ARMY AIRFIELD        2        1
3  Abilene-KS MANHATTAN REGIONAL AIRPORT        4        3
4 Archbold-OH   SALINA MUNICIPAL AIRPORT        1        2
5 Archbold-OH     MARSHALL ARMY AIRFIELD        2        1
6 Archbold-OH        MULTI PURPOSE RANGE        3        3
loc车站近距离象限
1阿比林KS萨利纳市机场1 2
2阿比林KS马歇尔陆军机场2 1
3阿比林KS曼哈顿地区机场4 3
4阿奇博尔德OH萨利纳市机场1 2
5阿奇博尔德OH马歇尔陆军机场2 1
6 Archbold OH多用途系列3 3

因此,对于第一个loc,您将保留第1、2和4行,对于第二个loc,您将保留第11、12和13行,对吗?是的,这是正确的,您可以粘贴您需要获得的预期结果吗?@Frank我认为distinct只保留了指定的变量,但我刚刚看到您可以指定。keep_all=T,因此我将编辑我的答案。谢谢好吧,这是有道理的,我不知道托普的事。谢谢你的帮助!