0
我準備好以下數據框來運行邏輯迴歸,將「總計」和「是」計數轉換爲二進制,其中yes = yes和no =總沒錯。這是原件:從R中的年度頻率創建長整型表
year<-1999:2012
total<-c(4372, 6448, 6141, 5630, 6588, 7878, 7768, 7352, 6333, 5168, 4569, 4152, 3540, 1412)
yes<-c(400, 580, 609, 567, 606, 843, 853, 839, 825, 607, 510, 459, 476, 209)
mdr<-data.frame(year, total, yes)
我想要一個longform表設置二進制yes/no與year作爲線性變量;即兩列:數據$年,重複的「總」時間,以及數據$ mdr,這是'Y'每年重複'是'時間和'N'重複總計 - 是在給定年份中發生的是。憑直覺,我知道的語法是可怕的位置:
newdf<-
for 1:i in mdr
newdf$year<-rep(year, 'total' times)
newdf$mdr<-rep(c('Y','N') times = c(yes, total-yes)
預期輸出:
Year MDR
1999 Y
1999 Y
1999 Y
1999 Y
但隨着400個Y和4372-400 N爲1999年,580個Y和6448-580 N爲2000年,等
有人可以幫我把它變成一個工作循環或sapply或類似?
謝謝!
你能顯示預期的輸出嗎 – akrun
你不需要*做邏輯迴歸。請參閱'?glm'的細節中'權重'的描述。如果你定義'mdr $ prop = mdr $ yes/mdr $ total',你可以做'glm(prop〜year,family = binomial,weights = total,data = mdf)'。 – Gregor
@格雷戈爾,謝謝!爲我節省了大量的工作......必須迭代約30次以上的迴歸。 – jlev514