如何基于第二个变量创建(整数或数字)变量,但以第三个变量的许多 AND & OR 条件为条件

How to create a (integer or numeric) variable based on a second one, but conditioned to many AND & OR conditions on third variables

我只是一个小本科生,对于我的愚蠢问题深表歉意,但我真的无法进一步复制我在 Internet 上找到的文章。 该代码在 Stata 中可用,但在 R 中不可用。

这里是 Stata 代码,每一行都是第三个变量满足的条件,所以我想创建的代码只需要导入第二个代码的值。

gen child_care_basic = tuactdur24 if
(tutier1code==3 & tutier2code ==1 & tutier3code==1) |   

[...]

我在 R 中尝试的是:

timeuse_2003$CHILD_CARE_BASIC <- NA
timeuse_2003$CHILD_CARE_BASIC[(timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==1) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==1) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==8) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==9) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==11) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==12) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==99) |
                          (timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==3) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==1) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==8) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==9) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==1 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==4 & timeuse_2003$TUTIER2CODE==3 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==17 & timeuse_2003$TUTIER2CODE==3 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==17 & timeuse_2003$TUTIER2CODE==4 & timeuse_2003$TUTIER3CODE==10) |
                          (timeuse_2003$TUTIER1CODE==17 & timeuse_2003$TUTIER2CODE==4 & timeuse_2003$TUTIER3CODE==1)
                          ]<- timeuse_2003$TUACTDUR24 

问题是,我在整个列中只有 NA。

再一次,对于这样一个基本问题,我深表歉意,但我只是尝试了很多不同的方法,但没有任何效果,所以我决定问你们一些初学者的问题。

提前致谢。

法布里西奥

您可以按照以下模式根据您的业务逻辑创建一个包含值子集的新列。

timeuse_2003 = data.frame(
    TUACTDUR24 = c(10.1, 20.2, 30.3, 40.4, 50.5),
    TUTIER1CODE = c(3, 4, 3, 4, 3),
    TUTIER2CODE = c(1, 1, 1, 3, 3))

timeuse_2003

  TUACTDUR24 TUTIER1CODE TUTIER2CODE
1       10.1           3           1
2       20.2           4           1
3       30.3           3           1
4       40.4           4           3
5       50.5           3           3

selection = timeuse_2003$TUTIER1CODE==3 & timeuse_2003$TUTIER2CODE==1
timeuse_2003$CHILD_CARE_BASIC = NA
timeuse_2003$CHILD_CARE_BASIC[selection] = timeuse_2003$TUACTDUR24[selection]

timeuse_2003

  TUACTDUR24 TUTIER1CODE TUTIER2CODE CHILD_CARE_BASIC
1       10.1           3           1             10.1
2       20.2           4           1               NA
3       30.3           3           1             30.3
4       40.4           4           3               NA
5       50.5           3           3               NA