2017-04-03 318 views
-1

使用已创建的虚拟变量:非吸烟者,轻度吸烟者,中度吸烟者和重度吸烟者,我需要查找出生体重的平均值,中位数和标准差( Y)为每个虚拟组。我确信代码很简单,但它滑倒了我的头,找不到正确的答案。在Rstudio中使用Dummy变量查找Y的平均值,中位数和SD

+1

也许看看'?aggregate'。您必须分别汇总每个虚拟列。顺便说一句,我想最好清楚你的数据集和感兴趣的变量,MASS :: birthwt和bwt。 – Frank

回答

1
require(data.table) 

cats <- c('non-smoker', 
      'heavy-smoker', 
      'moderate-smoker', 
      'light-smoker') 

df <- data.frame(bweight = 100 + 30*rnorm(100), 
       status = sample(cats,100, replace = T)) 


dt <- data.table(df) 


dt2 <- dt[,.(mean = mean(bweight), 
    sd = sd(bweight), 
    median =median(bweight)), 
    status] 

dt2 

     status  mean  sd median 
1: heavy-smoker 108.02752 22.56118 113.35685 
2: light-smoker 100.86848 30.78375 104.00167 
3:  non-smoker 95.92386 24.54260 97.62238 
4: moderate-smoker 106.45183 29.73191 106.81698 
+1

感谢您的评论,你是对的我应该使用set.seed,我会尽量记住下一次。 –