我寫了一個函數,它檢查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。
實際的規則,我想申請:
•IF shopmanager_status IN( 「完整」, 「處理」)和IF(source_medium IN( 「tradetracker/NL」, 「谷歌/有機」,「冰/有機」, 「雅虎/有機」) - > YES
•IF shopmanager_status IN( 「完全」, 「處理」)AND IF(click_to_conversion < 1) - > YES
•IF shopmanager_status IN( 「complete」,「processing AND(campaign IN(」1.Top-Brand「) - >是
•REST - >否
如果需要更多示例,我很樂意提供。不知何故,我無法找出IF ELSE語句發生了什麼。
我得到警告消息:%C( 在如果(shopmanager_status% 「完全」, 「處理」)&click_to_conversion <: 條件具有長度> 1且僅第一元件將被使用 –
在第一個版本中,你不返回結果,並且你只計算第一行的值,第二個版本使用「||」,所以它返回一個單一的值,再次只計算如果'click_to_conversion' <1,邏輯就完全不同於第一個 - 但是第一個只有在'shopmanager_status'完成或處理時纔會被接受。請指定c狀態是。 –
@ChristophWolk首先是領先我將編輯帖子。謝謝! –