data.frameの各行をチェックする関数を書いています。チェックは、YESまたはNOを出力する条件文です。非常にストレートでなければなりません。しかし、どういうわけか結果は意図されたものではありません。私は2つの異なる方法を試みました。複数のifelseを追加して、列として追加するベクトルを作成する
ここではいくつかのテストデータを見つけてください:TEST TABLE
add_accepted_column <- function(df){
shopmanager_status <- df[28]
source_medium <- df[22]
campaign <- df[23]
click_to_conversion <- df[29]
accepted <- c()
if(shopmanager_status %in% c("complete","processing") & source_medium %in% c("tradetracker/nl", "google/organic", "bing/organic", "yahoo/organic")){
accepted <- c(accepted,"YES")
}
else if(shopmanager_status %in% c("complete","processing") & click_to_conversion < 1){
accepted <- c(accepted,"YES")
}
else if(shopmanager_status %in% c("complete","processing") & campaign %in% c("1.Top-Brand")){
accepted <- c(accepted,"YES")
} else{
accepted <- c(accepted,"NO")
}
}
#
add_accepted_column <- function(df){
shopmanager_status <- df[28]
source_medium <- df[22]
campaign <- df[23]
click_to_conversion <- df[29]
#print(class(click_to_conversion))
accepted <- c()
accepted <- c(accepted,if_else(shopmanager_status %in% c("complete","processing") &
source_medium %in% c("tradetracker/nl", "google/organic", "bing/organic", "yahoo/organic") ||
click_to_conversion < 1 ||
campaign %in% c("1.Top-Brand"),"YES","NO"))
return(accepted)
}
たとえばgoogle/cpc
のために私にYESを与えるというスーパー奇妙です。
私が適用する実際のルール:
•shopmanager_status IN( "完全"、 "処理")AND( "tradetracker/NL"、 "有機/グーグル"、「ビング/ IN(source_medium IF IF有機」、 "ヤフー/オーガニック") - > YES
•shopmanager_status IN(IF "完全"、 "処理")AND(click_to_conversion < 1)IF - shopmanager_status IN(IF> YES
• "完了"、 "処理中(キャンペーンIN(1.Top-Brand") - > YES
•REST - > NO
もっと多くの例が必要な場合は、喜んで提供してください。どういうわけか、IF ELSEステートメントで何が起こっているのかわかりません。
を試してください。<: 条件は長有し> 1と最初の要素だけを (shopmanager_status%%でC( "完了"、 "処理")&click_to_conversion場合で –
最初のバージョンでは、結果を返さず、最初の行の値だけを計算し、2番目の行では "||"を使用するので、単一の値を返します。また、ロジックはfirst-secondとはまったく異なりますが、 'click_to_conversion' <1の場合は常に受け付けますが、' shopmanager_status'が完了または処理されている場合にのみ最初のものです。 onditionsはあります。 –
@ChristophWolk最初にリードしています。私は投稿を編集します。ありがとう! –