我正在尝试重新编码从一个Hispanic变量和 6 个其他变量派生的种族/民族race变量。
我已经尝试了其中一些方法。我不太清楚如何为每个因素保持所有不同的水平。
该Hispanic变量有 5 个级别:0:NA, 1:yes, 2:no, 3:unable to determine, 99:missing。
每个race变量有 3 个级别:0:does not apply, 1:applies, 99:missing.
我的新p1raceeth变量将有 7 个级别:0:Unknown, 1:Black,NH, 2:Hispanic any race, 3:Other, 4:White,NH, 99:missing.
我也尝试过使用下面的代码对其进行编码,它适用于一个race:amakn变量,但是当我race使用相同的代码继续下一个变量时,它会覆盖过去的重新编码。任何建议都会非常有帮助。包括有关如何折叠race和Hispanic变量中的因子水平以使其更易于管理的建议。
促使这一点的原因是我试图asian与nhopi. 真是个兔子洞。
d_a$p1raceeth <- "0"
d_a$p1raceeth[d_a$Hispanic=="0" & d_a$amakn=="0"] <- "0"
d_a$p1raceeth[d_a$Hispanic=="0" & d_a$amakn=="1"] <- "0"
d_a$p1raceeth[d_a$Hispanic=="0" & d_a$amakn=="99"] <- "0"
d_a$p1raceeth[d_a$Hispanic=="1" & d_a$amakn=="0"] <- "2"
d_a$p1raceeth[d_a$Hispanic=="1" & d_a$amakn=="1"] <- "2"
d_a$p1raceeth[d_a$Hispanic=="1" & d_a$amakn=="99"] <- "99"
d_a$p1raceeth[d_a$Hispanic=="2" & d_a$amakn=="0"] <- "99"
d_a$p1raceeth[d_a$Hispanic=="2" & d_a$amakn=="1"] <- "3"
d_a$p1raceeth[d_a$Hispanic=="2" & d_a$amakn=="99"] <- "99"
d_a$p1raceeth[d_a$Hispanic=="3" & d_a$amakn=="0"] <- "0"
d_a$p1raceeth[d_a$Hispanic=="3" & d_a$amakn=="1"] <- "3"
d_a$p1raceeth[d_a$Hispanic=="3" & d_a$amakn=="99"] <- "99"
d_a$p1raceeth[d_a$Hispanic=="99" & d_a$amakn=="0"] <- "99"
d_a$p1raceeth[d_a$Hispanic=="99" & d_a$amakn=="1"] <- "3"
d_a$p1raceeth[d_a$Hispanic=="99" & d_a$amakn=="99"] <- "99"
这是我的数据示例:
df <- read.table(text=
"Hispanic amakn asian blkaa nhopi white utod
1 1 0 0 0 0 1 0
2 2 99 99 1 99 99 99
3 99 99 99 99 99 99 99
4 3 99 99 99 99 99 99
5 0 99 99 99 99 99 99
6 99 99 99 99 99 99 99
7 3 99 99 99 99 99 99
8 0 99 99 99 99 99 99
9 2 0 0 0 0 1 0
10 2 0 0 0 0 1 0
11 2 0 0 0 0 1 0
12 1 0 0 0 0 1 0
13 0 99 99 99 99 99 99
14 2 0 0 0 0 1 0
15 0 99 99 99 99 99 99
16 2 0 0 0 0 1 0
17 2 0 0 1 0 0 0
18 0 0 0 0 0 0 0
19 99 99 99 99 99 99 99
20 1 99 99 99 99 99 99
21 0 99 99 99 99 99 99
22 2 0 0 0 0 1 0
23 2 0 0 0 0 1 0
24 2 0 0 1 0 0 0
25 0 99 99 99 99 99 99
26 99 0 0 0 0 1 0
27 0 99 99 99 99 99 99
28 99 0 0 0 0 1 0
29 1 99 99 99 99 99 99
30 99 99 99 99 99 99 99
31 2 0 0 0 0 1 0
32 2 0 0 0 0 1 0
33 3 0 1 0 0 0 0
34 2 99 99 99 99 1 99
35 2 0 0 0 0 1 0
36 1 99 99 99 99 99 99
37 0 99 99 99 99 99 99
38 2 0 0 0 0 1 0
39 99 99 99 99 99 99 99
40 1 99 99 99 99 99 99
", header=TRUE)