私がやっていること:1つのデータフレームから列を取り出し、ifelseステートメントを使用してコードを再コードし、dplyrを使用して新しいデータフレームに移動します。それを一気に行うパイプ。複数のifelseステートメントとdplyrパイプ、2番目のオブジェクトを認識しない
問題:このコードは1列でうまく動作しますが、Rが同じ行のコードで複数の列に遭遇すると、問題が発生しています。 2番目の列は認識されず、Rはエラーをスローします。次のエラーが表示されます。
Error in mutate_impl(.data, dots) : Evaluation error: object 'var2_orig' not found.
これはどういう考えですか?また、ifelseステートメントを使用せずにこれに簡単な方法があるかもしれません。私はこのフロントの提案も受け付けていますが、ifelseでこれを行う方法と複数の列でエラーが発生する理由についてはまだ興味があります。どうもありがとう。
サンプルコード:
library(tidyverse)
# creating fake data set
df_orig <- data_frame(var1_orig = sample(1:3, 50, replace = T),
var2_orig = sample(-2:2, 50, replace = T))
# works for one var (recoding 3's as NA, 2's as 1, and 1's as 0):
df_new <- df_orig %>%
as_tibble() %>%
transmute(var1_new = ifelse(var1_orig == 3, NA, ifelse(var1_orig ==
2, 1, ifelse(var1_orig == 1, 0, var1_orig))))
# and works the other var (recoding negatives as NA, 1's and 2's as 1, and
leaving 0's as 0's):
df_new <- df_orig %>%
as_tibble() %>%
transmute(var2_new = ifelse(var2_orig < 0, NA, ifelse(var2_orig ==
1 | var2_orig == 2, 1, 0)))
# but not together in same line of code (error: var2_orig not recognized):
df_new <- df_orig %>%
as_tibble() %>%
transmute(var1_new = ifelse(var1_orig == 3, NA, ifelse(var1_orig ==
2, 1, ifelse(var1_orig == 1, 0, var1_orig)))) %>%
transmute(var2_new = ifelse(var2_orig < 0, NA, ifelse(var2_orig ==
1 | var2_orig == 2, 1, 0)))
'それが作成されない変数をドロップtransmute'。 'mutate'を使用してください。 –