2016-04-11 34 views
-1

Rで2つのデータセットを条件とマージすることについて質問があります。Rで2つのデータセットを条件付きでマージする

最初のデータセットは、どの空港滑走路(滑走路)がどの日付に使用されたか、飛行機がその滑走路(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 

第二のデータセットは、滑走路あたりと到着/出発あたりの苦情の数を示します。たとえば、2番目のデータセットに対する苦情は滑走路89と到着(A)に属します(これは2番目のデータセット自体には記載されていませんが)。

データセット2:

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

今、私は再び日付に基づいて最初の1、に第二のデータセットを追加したいです。さらに、データセット2の苦情の価値を滑走路89およびデータセット1の到着と結びつけたい。他の滑走路および到着/出発の苦情はNAとなる。滑走路89と到着は、日付に基づいてデータセットをマージする場合:私は、これはif文で働くだろうと思った

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 

これは、私が作成する最後のデータセットの例です。しかし、私はまだ望みの結果を得ておらず、どのように進むべきかわからない。合併するだけでもうまくいかなかった。それはすべての滑走路に苦情を出すだろうが、私は滑走路89と到着と結びつけたい。

誰かが私を助けることができれば、本当にありがとう!

+0

クイックフィックスはDATASET2に滑走路およびA/Dを追加することです? – chinsoon12

+0

あなたの迅速な対応に感謝します!データセット全体はより多くの苦情ファイル(例えば滑走路120、Aの場合など)で構成されていますので、私はそれを実行できるかどうかは分かりません。なぜなら、まだ正しくリンクされていないからです。 – Veraaa

+0

Dataset2が89、A用であることをどのように知っていますか? – chinsoon12

答えて

0

私は心の中でこれを持っていた:

フォームデータ

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

は無関係な値

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

を除去するための簡単なループます。また含むことができ、日付によって

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

をマージArrivaループ内のL /出発変数元の作業データは、ゲート89からの逸脱が含まれていると、あなたはそれらの苦情に関連付けることしたくない場合:

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

'for'ループは必要ありません。imo:' df3 $ dt3 $ Runway!= 89、 'Complaints'] < - NA'はうまく動作します – Jaap

+0

あなたは正しいです。私は、しかし、端に住むのが好きです。 –

+0

はい、今動作します!どうもありがとうございます!!ほんとうにありがとう! – Veraaa

関連する問題