下面是兩個簡單的數據幀。我想重新編碼(摺疊)Sat1
和Sat2
列,以便所有滿意度都編碼爲Satisfied
,所有不滿度都編碼爲Dissatisfied
。中性將保持中性。這些因素將因此有三個級別 - Satisfied, Dissatisfied, and Neutral
。使用Purrr和Dplyr對多個數據幀重新編碼相似的因子水平
我通常通過結合所述數據幀,並使用lapply
與來自car
包重碼,例如沿着實現此目的:
DF1[2:3] <- lapply(DF1[2:3], recode, c('"Somewhat Satisfied"= "Satisfied","Satisfied"="Satisfied","Extremely Dissatisfied"="Dissatisfied"........etc, etc
我想完成此使用地圖的功能,具體地at_map
(保持數據幀,但我是purrr
的新手,所以隨意推薦其他版本的地圖)purrr
,以及dplyr
,tidyr ,
stringr and
ggplot2`因此一切都可以很容易地流水線。
下面的例子是我想要完成的,但是對於重新編碼,但是我無法使它工作。
http://www.r-bloggers.com/using-purrr-with-dplyr/
我想用at_map或類似的映射函數,這樣我可以保持Sat1
和Sat2
原始列,因此再編碼的列將被添加到所述數據幀和重命名。如果這個步驟也可以包含在一個函數中,那將會很棒。
實際上,我會有很多數據幀,所以我只想重新編碼因子水平一次,然後使用purrr
中的函數使用最少量的代碼對所有數據幀進行更改。
Names<-c("James","Chris","Jessica","Tomoki","Anna","Gerald")
Sat1<-c("Satisfied","Very Satisfied","Dissatisfied","Somewhat Satisfied","Dissatisfied","Neutral")
Sat2<-c("Very Dissatisfied","Somewhat Satisfied","Neutral","Neutral","Satisfied","Satisfied")
Program<-c("A","B","A","C","B","D")
Pets<-c("Snake","Dog","Dog","Dog","Cat","None")
DF1<-data.frame(Names,Sat1,Sat2,Program,Pets)
Names<-c("Tim","John","Amy","Alberto","Desrahi","Francesca")
Sat1<-c("Extremely Satisfied","Satisfied","Satisfed","Somewhat Dissatisfied","Dissatisfied","Satisfied")
Sat2<-c("Dissatisfied","Somewhat Dissatisfied","Neutral","Extremely Dissatisfied","Somewhat Satisfied","Somewhat Dissatisfied")
Program<-c("A","B","A","C","B","D")
DF2<-data.frame(Names,Sat1,Sat2,Program)
你想要所有的數據幀結尾或單獨存儲在一個列表或...?從dplyr_0.4.3.9000結合'map'或'map_df',像'mutate_each'這樣的東西看起來相當簡單。 'map_at'看起來像代替了當前的變量,所以在這種情況下可能不是使用的工具。 – aosmith
感謝您的回覆。如果數據幀分開保存在列表中,我想這沒關係。我的主要目標是找到一個快速方法(在purrr dplyr管道中),這將允許我一次性重新編碼跨多個數據幀的因素。我喜歡結合mutate_each和map函數的想法。沒關係,如果當前變量被替換了,因爲我可以先複製數據幀。所以,如果你能爲你的例子展示代碼,我將不勝感激。 – Mike