我想使用循环生成虚拟变量(必须为1/0),并基于一个变量的最常见响应。经过大量搜索,我仍未能找到解决方案。我已提取出最常见的响应(字符串,例如前5个是"A"、"B"等):
top5<-names(head(sort(table(data$var1), decreasing = TRUE),5)
我希望循环检查另一个变量("var2")是否等于A,如果是则设置为1,否则为0,然后使用aggregate()给出总结。在Stata中,我可以使用`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)
。 - Justin