我正在尝试使用基于变量最频繁响应的循环生成虚拟变量(必须为1/0)。大量的谷歌搜索后,我没有设法提出解决方案。我已经提取的最常见的反应(字符串,说前5名是“A”,“B”,......,“E”)使用循环创建虚拟变量R
top5<-names(head(sort(table(data$var1), decreasing = TRUE),5)
我想循环检查另一变量(“var2”)等于A,如果设置为1,OW = 0,则使用aggregate()给出摘要。在Stata,我可以参考我使用环形变量'我”,但不是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
下面是你要找的?如果不是,请添加一些关于你希望做什么的细节。 –