Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用条件合并R中的两个数据集_R_Date_Merge_Dataset_Conditional Statements - Fatal编程技术网

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

使用条件合并R中的两个数据集,r,date,merge,dataset,conditional-statements,R,Date,Merge,Dataset,Conditional Statements,我有一个关于合并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 第二个

我有一个关于合并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号跑道和到达相联系

如果有人能帮我,我会非常感激

我想到了这一点:

表单数据

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))

df1快速修复方法是将跑道和a/D添加到数据集2?感谢您的快速响应!整个数据集包含更多的投诉文件(例如120号跑道,A号跑道),等等,所以我不确定我是否可以这样做,因为它仍然无法正确链接?你怎么知道数据集2是用于89,A?我获得了一些开源数据文件dat,用于指定哪个投诉数据集属于哪个跑道和到达/离开。可能重复:无需为
loop imo设置
df3[df3$RUNNET!=89,'投诉']您是对的。一、 然而,我喜欢生活在边缘。是的,它现在起作用了!非常感谢你!!我真的很感激@Velaaa考虑接受这个答案作为正确的解决方案,通过检查绿色刻度标记下的分数。它应该变成绿色。
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
}
for(i in 1:6)
  {
  if(df3$Runway[i]==89 && df3$AD[i]=="A")df3Complaints[i] else df3$Complaints[i] <- NA
}