有没有创建一个循环,这将创建一个新的变量每个原始18个变量的一种方式?

问题描述 投票:-1回答:1

我有4个变量的数据集,这些变量之一是虚拟陈述个人是否从某个特定的程序(退出)毕业。我需要创建一个循环,将针对每个3个变量的创建两个新的变量(意味着虚设= 1和平均虚设= 0)。这是我的代码,我想使之更有效率,因为后来我想创建一个出口== 0新data.frame和两种。减去!

 summary_means_1 = bf %>%
 filter(exits == 1) %>% 
 summarise(
 v1_1 = as.double(mean(bf$v25_grad, na.rm = TRUE)),
 v2_1 = as.double(mean(bf$v29_read, na.rm = TRUE)),
 v3_1 = as.double(mean(bf$v30_math, na.rm = TRUE))
 )
r
1个回答
0
投票

你可以用plyr包做到这一点:

之所以这样说,是你的数据(简化):

df <- data.frame(Dummy=sample(0:1, 10, T), V1=rnorm(10, 10), V2=rpois(10, 0.5))

此代码将计算每列,通过虚拟分割的意思是:

library(magrittr)
library(plyr)
df %>% 
   group_by(Dummy) %>% 
   summarise(Mean_V1=mean(V1, na.rm = T), 
             Mean_V2=mean(V2, na.rm = T))

你需要在每一列的summarise部分新增一行。

使用基础R可以使用colMeans与子集化的数据:

colMeans(df[df$Dummy==0, -1])
colMeans(df[df$Dummy==1, -1])

或者你可以像这样将它们结合起来:

data.frame(Col=c("V1", "V2"), 
           Mean_0=colMeans(df[df$Dummy==0, -1]), 
           Mean_1=colMeans(df[df$Dummy==1, -1]))
© www.soinside.com 2019 - 2024. All rights reserved.