[英]How to Split-Apply-Combine for several variables / columns in R
我想按組對幾個變量執行功能。
偽數據;
df<-data.frame(rnorm(100,mean=10),
rnorm(100,mean=15),
rnorm(100,mean=20),
rep(letters[1:10],each=10)
)
colnames(df)<-c("var1","var2","var3","group1")
在這種情況下,我想將每個變量按組居中。 我想返回一個帶有原始變量和居中變量的數據框。
通常我為此使用PLYR包;
library(plyr)
ddply(df, "group1", transform, centered_var1= scale(var1, scale=FALSE))
但是,我無法成功地循環執行此功能,也無法想到實現此目的的另一種最小代碼方式。
我對非PLYR解決方案持開放態度...我的主要標准是將代碼保持在最低限度。
使用dplyr
library(dplyr)
df %>% group_by(group1) %>%
mutate_each(funs(scale(., scale=F))) -> res
colwise
函數可能就是您想要的。
library("plyr")
ddply(df, .(group1), colwise(scale, scale = FALSE))
這是你想要的嗎?
ddply(df, "group1", transform, centered_var1= scale(var1, scale=FALSE),
centered_var2 = scale(var2, scale=FALSE),
centered_var3 = scale(var3, scale=FALSE))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.