乾杯、 次の構造のデータフレームが2つあります。データフレーム内の列の値と日付の一致と置換r
DF1:
Airlines HeadQ Date Cost_Index
American PHX 07-31-2016 220
American ATL 08-31-2016 150
American ATL 10-31-2016 150
Delta ATL 10-31-2016 180
American ATL 08-31-2017 200
第二のデータフレームがDF2は、以下の構造を有する:
DF2:
Airlines HeadQ Date
American ATL 09-30-2016
Delta ATL 03-31-2017
今すぐデータフレームDF1とDF2を見上げ、私は、次のデータフレームにDF1を変更したいと思います。
DF1:
Airlines HeadQ Date Cost_Index
American PHX 07-31-2016 220
American ATL 08-31-2016 0
American ATL 10-31-2016 150
Delta ATL 10-31-2016 180
American ATL 08-31-2017 200
条件は、航空、DF2からDF1のHeadQのルックアップで、DF1 $日< DF2 $日が続い0としてCost_Indexを作るか、他Cost_Indexを続行します。
私は、失敗し、試してみました:
DF1$Cost_Index <- ifelse(DF1$Airlines == DF2$Airlines & DF1$HeadQ == DF2$HeadQ
& DF1$Date < DF2$Date, 0, DF1$Cost_Index)
Warning:
1: In DF1$Airlines == DF2$Airlines : longer object
length is not a multiple of shorter object length".
2: In<=.default(DF1$Date, DF2$Date) : longer object length is not a
multiple of shorter object length
DF1:
Airlines HeadQ Date Cost_Index
American PHX 07-31-2016 220
American ATL 08-31-2016 0
American ATL 10-31-2016 0
Delta ATL 10-31-2016 0
American ATL 08-31-2017 200
誰もが正しい方向に私を指すことができますか?
注:
str(DF1$Date): Date, format: "2016-10-31"
str(DF2$Date): Date, format: "2016-08-31"
ない、私はそれを愛することを確認、しかし:
dplyr
構文で(Date.y
がNA
ある場合の追加のチェックがDF2で一致がない場合、Cost_Index
は同じまま必要があることを、あなたのロジックに応じて、ここで適用されます) ($ DF2 $ DF2 $ Airlines == Airlines&DF2 $ HeadQ == HeadQ、 ''); $ mutate_if(is.factor、as.character)%>%rowwise()%>%mutate(コストインデックス= ifelse日付]])、0L、Cost_Index)) ' – alistaireこれはあなたの前のQと全く同じです。別のアプローチを探しているのにそれを尋ねていることを示すために、もう一度ではありません。 – Arun