我試圖搜索我的問題的答案,但我找到了Stata(我正在使用R)的正確答案。檢查一個變量是否是時間不變的R
我正在使用全國性調查來研究哪些變量會影響補充養老金的投資(這在我的國家是自願的)。
該調查每兩年進行一次,有些人接受一次以上的採訪。我篩選了df,以便只有個人出現超過一次的時間才能執行filter
命令。這是從最初的調查爲例已經過濾:
year id y.b sex income pens
2002 1 1950 F 100000 0
2002 2 1943 M 55000 1
2004 1 1950 F 88000 1
2004 2 1943 M 66000 1
2006 3 1966 M 12000 1
2008 3 1966 M 24000 1
2008 4 1972 F 33000 0
2010 4 1972 F 35000 0
其中id是個人,y.b是出生年份,筆是一個虛擬這需要值爲1,如果個人在補充養老保險的形式投資。 我想這樣我加載plm
包運行FE迴歸,然後我這樣設置DF:
df.p <- plm.data(df, c("id", "year")
此命令後,我預計,不斷變量被刪除,但在運行此迴歸後:
pan1 <- plm (pens ~ woman + age + I(age^2) + high + medium + north + centre, model="within", effect = "individual", data=dd.p, na.action = na.omit)
(如果女性是一個變量,如果個體是女性,高,中指教育水平和北部,中心到地理區域),並且在命令summary(pan1)
之後,變量女性仍然存在。
在這一點上,我認爲在調查中存在一些錯誤(例如,性別插入不正確,所以它不是相同的ID),所以我試圖找到一種方法來檢查是否每個ID,性別是不變的。
我想這個代碼,但我相信這是不正確的:
df$x <- ifelse(df$id==df$id & df$sex==df$sex,1,0)
的基本思想shuold是這樣的:
df$x <- ifelse(df$id=="1" & df$sex=="F",1,0)
,但我不能做手工,因爲DF由4萬個觀測組成。
如果你知道另一種方法來檢查變量是否在R中是常量,我會很高興。
預先感謝您
要麼'DF $ x < - (ave(df $ sex,df $ id,FUN = function(x)length(unique(x))== 1)* 1'或'aggregate(sex〜id ,df,FUN =函數(i)長度(unique(i))== 1)* 1',具體取決於您希望輸出的方式。 – Sotos