library(tidyverse)
library(stringr)
library(lazyeval)
以下
簡単なデータフレーム例えばデータです... 機能は標準評価、Forcats、およびStringrで複数の満足度スケール変数をコーディングし直す
Respondent<-c("Respondent1","Respondent2","Respondent3","Respondent4","Respondent5")
Sat1<-c("1 Extremely dissatisfied","2 Moderately dissatisfied","2 Moderately Dissatisfied","4 Neutral","7 Extrmely satified")
Sat2<-c("7 Extremely Satisfied","2. Moderately dissatisfied","4 Neutral","3 Slightly dissatisfied","3 Slightly Dissatisfied")
Sat3<-c("1 Extremely dissatisfied","7 Extremely satisfied","6 Moderately satisfied","4. Neutral","3 Slightly dissatisfied")
Pet<-c("Cat","Cat","Dog","Hamster","Rabbit")
df <- data_frame(Respondent,Sat1,Sat2,Sat3,Pet)
次のコードは、満足度スコア列を再コーディングすることです
満足、不満、中立という3つのカテゴリーに分類されます。
df %>%
mutate_at(vars(starts_with("Sat")),
funs(fct_collapse(factor(str_sub(., 1, 1), levels = as.character(1:7)),
Satisfied = c("7","6","5"),
Dissatisfied =c ("3", "2","1"),
Neutral = "4")))
しかし、私の本当の例では、 複数のファイル、満足度スケールの列の数が異なるごとに、同じ満足度スケールを再コーディングが含まれます。ですから、私はこれをデータフレーム名と再コードする任意の数の列に入力できるようにする関数に入れたいと思います。以下は私が使用しようとしているコードの変種ですが、動作させることはできません。私はドットを使って遊んでいましたが、 "..."が、何かを見つけることができませんでした。
REC<-function(data,...){
data %>%
mutate_at(vars(...),
funs(fct_collapse(factor(str_sub(., 1, 1), levels = as.character(1:7)),
Satisfied = c("7","6","5"),
Dissatisfied =c ("3", "2","1"),
Neutral = "4")))
}
mutate_atで標準評価を使用する必要がありますか?また、.dotsを...と使用する必要がありますか? mutate_atで標準評価が機能しない場合は、他の関数/手法を使用して同じ最終目標を達成することができます。