如何基于第二个变量创建(整数或数字)变量,但以第三个变量的许多 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
我只是一个小本科生,对于我的愚蠢问题深表歉意,但我真的无法进一步复制我在 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