2017-03-06 18 views
-3

新しい指標変数を作成するにはどうしたらいいですか?それはWorkingFamilyです。一致する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

@Rickはうれしいです。 'setDT(dat)'を実行すると、既存のdata.frameをdata.tableに変更することができます。 – Kristofersen

関連する問題