【问题标题】:filtering on two variables in R过滤R中的两个变量
【发布时间】:2017-08-07 20:04:00
【问题描述】:

我有一个数据集,其中每个位置都有 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

【问题讨论】:

  • 那么对于第一个 loc,您将保留第 1,2 和 4 行,而对于第二个 loc,您将保留第 11,12 和 13 行,对吗?
  • 是的,没错
  • 你能粘贴你需要得到的预期结果吗?

标签: r


【解决方案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

【讨论】:

  • @Frank 我认为 distinct 只保留指定的变量,但我刚刚看到您可以指定 .keep_all=T,所以我将编辑我的答案。谢谢!
  • 好吧,我不知道top_n。感谢您的帮助!
猜你喜欢
  • 2021-01-21
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多