2017-08-07 84 views
0

我有一个数据集有57个位置“家”,每个位置我有10个其他位置的“气象站”,以近英里排列。然后我有一个有气象站在四周的房屋周围的象限。 我想在R中编写代码,它需要最近的气象站和它的象限,然后在不同的象限中选取下一个最接近的,第三个在不同的象限中。所以我有一个基于最近站点的三角形。在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 
+0

所以对于第一个loc将保留行1,2和4,对于第二个loc行11,12和13,这是正确的吗? – Lamia

+0

是的,这是正确的 – Jeffkrop

+0

你能粘贴你需要得到的预期结果吗? – Onyambu

回答

1

使用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 
+1

@Frank我认为鲜明的只保留指定的变量,但我刚刚看到,你可以指定.keep_all = T,所以我会编辑我的答案。谢谢! – Lamia

+0

好吧,这是有道理的,我不知道top_n。谢谢您的帮助! – Jeffkrop