用条件合并 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
}
我有一个关于在 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
}