2017-03-06 40 views
-3

如何創建一個新的指示變量,讓它稱爲WorkingFamily,如果家庭中有任何個人被僱用,則等於1,否則爲0?根據匹配的ID和定義的條件創建新變量

具有相同SERIAL的個人在同一個家庭中。

使用EMPSTAT == 10或EMPSTAT == 12的個人。

> dput(head(IPUMS.SDdata.MC)) 
structure(list(YEAR = c(2016L, 2016L, 2016L, 2016L, 2016L, 2016L 
), SERIAL = c(89076L, 89077L, 89078L, 89079L, 89080L, 89104L), 
HWTSUPP = c(30187500L, 30183100L, 28600900L, 21051300L, 31378100L, 
17928900L), ASECFLAG = c(1L, 1L, 1L, 1L, 1L, 1L), COUNTY = c(6073L, 
6073L, 6073L, 6073L, 6073L, 6073L), MONTH = c(3L, 3L, 3L, 
3L, 3L, 3L), PERNUM = c(1L, 1L, 1L, 1L, 1L, 3L), WTSUPP = c(30187500L, 
30183100L, 28600900L, 21051300L, 31378100L, 17497400L), FAMSIZE = c(1L, 
1L, 1L, 1L, 1L, 4L), EMPSTAT = c(32L, 32L, 32L, 32L, 32L, 
0L), HIMCAID = c(2L, 2L, 2L, 2L, 2L, 2L), PID = c("2016 3 89076 1", 
"2016 3 89077 1", "2016 3 89078 1", "2016 3 89079 1", "2016 3 89080 1", 
"2016 3 89104 3"), WTSUPP2 = c(3018.75, 3018.31, 2860.09, 
2105.13, 3137.81, 1749.74)), .Names = c("YEAR", "SERIAL", 
"HWTSUPP", "ASECFLAG", "COUNTY", "MONTH", "PERNUM", "WTSUPP", 
"FAMSIZE", "EMPSTAT", "HIMCAID", "PID", "WTSUPP2"), row.names = c(174187L, 
174188L, 174189L, 174190L, 174191L, 174248L), class = "data.frame") 

enter image description here

+6

我們真的不想輸入您的數據。請提供我們可以剪切和粘貼的數據文本格式,而不是圖片。理想情況下,可以使用來自R data.frame的'dput'創建。 – G5W

+1

你嘗試過什麼嗎?這似乎更像是一個「請爲我做這個」類型的問題,而不是一個適當的編程問題。請參閱如何創建[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),並確保包含示例輸入數據(不在圖像)以及該輸入的期望輸出,因此可以測試和驗證解決方案。 – MrFlick

回答

1

我假設你遇到由串行分組的難度。你可以使用data.table來簡化操作。你應該真的包括你已經嘗試過的東西以及你堅持的東西。

library(data.table) 
dt = data.table(serial = c(rep(1,4), rep(2,4)), empstat = c(32,rep(0,7))) 

什麼data.table貌似增加所採用

serial empstat 
1:  1  32 
2:  1  0 
3:  1  0 
4:  1  0 
5:  2  0 
6:  2  0 
7:  2  0 
8:  2  0 

在那之前,你可以運行這個,看看是否有人有12的EMPSTAT或32

dt[ , "Employed" := ifelse(any(empstat %in% c(12,32)),1,0), by = .(serial)] 
    serial empstat Employed 
1:  1  32  1 
2:  1  0  1 
3:  1  0  1 
4:  1  0  1 
5:  2  0  0 
6:  2  0  0 
7:  2  0  0 
8:  2  0  0 
+0

謝謝Kristofersen我遇到了問題,通過SERIAL和庫(data.table)進行分組正是我需要簡化它的。對於其他使用此解決方案和自己的數據的其他人,請確保您首先使用定義一個新對象< - data.table(您的數據名稱)。我不斷收到未使用的參數錯誤,因爲我的數據未被識別爲data.table。 – Rick

+0

@瑞克很高興它的工作。您可以通過運行'setDT(dat)'將現有data.frame更改爲data.table – Kristofersen