【问题标题】:Merge two datasets in R with conditions将 R 中的两个数据集与条件合并
【发布时间】:2016-08-01 08:12:09
【问题描述】:

我有一个关于将 R 中的两个数据集与条件合并的问题。

第一个数据集显示了在哪个日期使用了哪条机场跑道(跑道),以及一架飞机是否到达或离开了该跑道(A/D)。

数据集 1:

Date      Runway   Arrival/Departure
01-01-08    89      A
01-01-08    120     A
01-01-08    97      D
01-01-09    89      A
01-02-09    92      D
01-02-10    89      A

第二个数据集描述了每条跑道和每次到达/离开的投诉数量。例如,第二个数据集的投诉属于 89 号跑道和到达 (A)(尽管如您所见,第二个数据集本身并未提及这一点)。

数据集 2:

Date       Complaints
01-01-08    12
01-01-09    15
01-02-10    53

现在我想将第二个数据集添加到第一个数据集,再次基于日期。此外,我希望数据集 2 的投诉值与 89 号跑道和数据集 1 的到达相关联。其他跑道和到达/离开的投诉将因此变为 NA。

这是我要创建的最终数据集的示例:

Date       Runway   A/D     Complaints
01-01-08    89      A       12
01-01-08    120     A       NA
01-01-08    97      D       NA
01-01-09    89      A       15
01-02-09    92      D       NA
01-02-10    89      A       53

我认为这适用于 if 语句:如果 89 号跑道和到达,则根据日期合并数据集。但是我还没有得到想要的结果,我不知道如何进行。简单的合并也行不通,因为这会给所有跑道都报错,但我只希望它与 89 号跑道和到达联系起来。

如果有人可以帮助我,我将不胜感激!

【问题讨论】:

  • 快速解决方法是将跑道和 A/D 添加到 Dataset2?
  • 感谢您的快速回复!整个数据集包含更多的投诉文件(例如 Runway 120, A)等,所以我不确定我是否可以这样做,因为它仍然无法正确链接?
  • 你怎么知道Dataset2是89,A的?
  • 我获得了一些开源数据文件,用于指定哪个投诉数据集属于哪个跑道和到达/离开。

标签: r date merge dataset conditional-statements


【解决方案1】:

我有这个想法:

表单数据

df1 <- data.frame(Date=c("01-01-08","01-01-08","01-01-08","01-01-09","01-02-09","01-02-10"),Runway=c(89,120,97,89,92,89),AD=c("A","A","D","A","D","A"))
df2 <- data.frame(Date=c("01-01-08","01-01-09","01-02-10"),Complaints=c(12,15,53))

按日期合并

df3 <- merge(df1,df2,by="Date",all.x=T)

删除不相关值的简单循环

for(i in 1:6)
  {
  if(df3$Runway[i]==89)df3Complaints[i] else df3$Complaints[i] <- NA
}

如果您的原始工作数据包含从 89 号登机口出发并且您不希望这些与投诉相关联,您还可以在循环中包含 Arrival/Departure 变量:

for(i in 1:6)
  {
  if(df3$Runway[i]==89 && df3$AD[i]=="A")df3Complaints[i] else df3$Complaints[i] <- NA
}

【讨论】:

  • 不需要 for 循环 imo:df3[df3$Runway != 89, 'Complaints'] &lt;- NA 工作正常
  • 你是对的。然而,我喜欢生活在边缘。
  • 是的,现在可以使用了!太感谢了!!我真的很感激!
  • @Veraaa 考虑通过检查分数下方的绿色刻度线来接受此答案作为正确的解决方案。它应该变成绿色。
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2018-02-18
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多