【发布时间】:2013-06-12 16:40:39
【问题描述】:
我正在尝试使用基于变量最频繁响应的循环生成虚拟变量(必须为 1/0)。经过大量的谷歌搜索,我还没有想出一个解决方案。我使用
提取了最常见的响应(字符串,比如前 5 个是“A”、“B”、...、“E”)top5<-names(head(sort(table(data$var1), decreasing = TRUE),5)
我希望循环检查另一个变量(“var2”)是否等于 A,如果是,则设置 =1,OW =0,然后使用聚合()给出摘要。在 Stata 中,我可以使用 `i' 来引用循环变量 i,但在 R 中则不行...不起作用的代码是:
for(i in top5) {
data$i.dummy <- ifelse(data$var2=="i",1,0)
aggregate(data$i.dummy~data$age+data$year,data,mean)
}
有什么建议吗?
【问题讨论】:
-
为什么
i周围有引号?您将var2与字符"i"进行比较,而不是变量i... 而且,比ifelse更快的是as.integer(data$var2==i)。 -
下面是您要找的东西吗?如果不是,请添加一些有关您希望做什么的详细信息。