2017-06-17 13 views
0

免責事項:これはコースラコースの課題に関する質問です。if/elseステートメントのみelseステートメントを評価する

私のデータセットで平日と週末を区別する新しい列を作成する方法がありません。私はforループ内で入れ子のif/else文を使用しています。問題は、出力がすべての行を「平日」にすることです。誰かが私のコードで明らかに間違ったことを見ていますか?私の最終目標は、「週末」または「平日」のいずれかの新しい係数変数を作成することです。

df4 <- mutate(df4, day = weekdays(df4$date)) 
for (i in df4$day) { 
    if(i %in% c("Saturday",'Sunday')) { 
     df4$day_type <- 'weekend' 
    } else { 
     df4$day_type <- 'weekday' 
    } 
} 
+1

'ifelse'はベクトル化された(下記参照します)。 'ifelse(df4 $ day%%c( '土曜日'、 '日曜日')、 'weekend'、 'weekday')' – Sotos

+0

forループでは、 'day_type'列全体を再割り当てするのではなく、一度に1つの要素だけ。私はなぜあなたが "平日"の最後の値が平日なので、すべてを平日と見なしているのだろうと思う。あなたは行数( 'i in 1:nrow(df4)')をループし、 'df4 $ day_type [i]'を使ってif elseをループすることができます。しかし、あなたの最善の策は恐らくSotosのifelse –

+0

ifelseが働いたことでしょう。グラシアス・ソトス –

答えて

0

私はあなたのコードを少し変更してください。

for (i in 1 : dim(df4)[1]) { 
    if(df4$day[i] %in% c('Saturday','Sunday')) { 
    df4$day_type[i] <- 'weekend' 
    } else { 
    df4$day_type[i] <- 'weekday' 
    } 
} 
関連する問題