我正在嘗試使用基於變量最頻繁響應的循環生成虛擬變量(必須爲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
下面是你要找的?如果不是,請添加一些關於你希望做什麼的細節。 –