2015-10-21 50 views
0

我有4列(年齡,廣泛年齡,性別,種族)的人口普查數據和每個人的多行。除此之外,我有關於不同年齡和種族的就業類型的數據。從數據集我知道每個就業類型的人數由「年齡」組,但只知道「廣泛年齡」組的人的種族。例如,我知道23到16-19歲的男性,53到20-21歲的男性,42-24歲的男性在兼職工作,但我只知道16歲的「廣泛年齡」組的族-24,我知道38個男性是白人,等等。嵌套if語句用於在R中分發數據

我是新來的R,並設法做if語句,如果「性別」&如果「年齡」,那麼他們在兼職工作但填充所有行。我試圖找到一種方法,可以根據我從人口普查數據中得知的數據來指定分佈,因此第五列按「年齡」組填寫了兼職僱員的正確數量,但對於「寬泛時期」,他們隨機分配民族。

我想我需要創建一個函數,但是與合併分佈部分有點混淆。任何建議將大大收到!

實施例的數據:

Age  Broad Age  Gender  Ethnicity 
16-17 16-24  Male   White 
16-17 16-24  Male   White 
16-17 16-24  Male   Asian 
16-17 16-24  Male   Asian 
16-17 16-24  Male   Asian 
18-19 16-24  Male   White 
18-19 16-24  Male   White 
18-19 16-24  Male   White 
18-19 16-24  Male   White 
18-19 16-24  Male   White 

實施例的外部數據(按年齡就業):

Age  Part-time Full-time S-E: Part-time S-E: Full-time Unemployed Student 

16 to 19 23.20% 5.52%   0.00%   0.55%   11.60%  58.56% 
20 to 21 11.33% 1.97%   1.48%   0.00%   6.40%  78.82% 
22 to 24 13.30% 18.09%  1.06%   2.13%   9.57%  54.26% 

實施例的外部數據(由種族和年齡廣泛就業型): 男性16-24:

Employment Type White Mixed/Multiple Asian African Caribbean Other 
Part-time   93.27%  0.90%   4.48%  0%  0.45%  0.90% 
Full-time   94.64%  0.89%   5.0%  0%   0.86%  1.79% 

我需要基於外部數據的百分比:

Age  Broad Age  Gender  Ethnicity Employment Type 
16-17 16-24  Male   White   Student 
16-17 16-24  Male   White   Part-time 
16-17 16-24  Male   Asian   Student 
16-17 16-24  Male   Asian   Student 
16-17 16-24  Male   Asian   Full-time 
18-19 16-24  Male   White   Student 
18-19 16-24  Male   White   Student 
18-19 16-24  Male   White   Unemployed 
18-19 16-24  Male   White   S-E:full-time 
18-19 16-24  Male   White   Student 

有沒有一種方法基於來自兩個外部源,我知道的分配,以填補第5列(僱傭型)?

+0

從您的數據。例如,它應該有可能得到不同的'Ethnicity'ies通過'Age'的數字。您的示例數據是否與您的情況不符?我收集你有2個不同的數據集。你能否提供兩套示例數據,以及一個示例輸出來展示你想要達到的目標? – gung

+0

示例數據符合情況,外部數據集是問題所在。我認爲我需要做的是按照16-17歲和男性,x%在PT就業中工作,然後,如果在16-24歲和男性之間,x%的PT員工是白人(例如)。 我會在下面添加更多的數據,因爲它不適合在這裏。謝謝。 – lts

回答

0

我會加入一個新的專欄,將Age類分組到Broad Age類中,因爲對於某些分析,您需要減少年齡分辨率,因爲無法爲Broad Age組增加分辨率。因此,年齡'16-17','18-19','19-20','21-22','22 -23'將在新欄中列出與廣泛年齡組相當的標籤'16-24' 。然後你可以使用merge來合併它們,例如

merge(dataset1,dataset2,by=c("new_age_group"),all.x=TRUE,incomparables=NA) 

創建新列事先使用類似

dataset1$new_age_group[dataset1$Age == '19-20'] <- '16-24' 
+0

謝謝@horseshoe,我將創建一個新的合併列,這可能會使這些年齡類別的數據分發更容易一些。我有更多的數據將5年組的「年齡」分組,但隨後種族增加到25歲「寬泛年齡」組。希望我會盡快將它分配到它的分佈! – lts