用条件合并 R 中的两个数据集

Merge two datasets in R with conditions

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

第一个数据集显示了哪条机场跑道(Runway)在哪一天使用,以及飞机是到达还是离开该跑道(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

第二个数据集描述了每条跑道和每个 arrival/departure 的投诉数量。例如,第二个数据集的投诉属于跑道 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 号跑道和到达相连。

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

我想到了这个:

表单数据

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
}