【发布时间】:2019-12-23 21:08:30
【问题描述】:
我只是一个小本科生,我为我的愚蠢问题道歉,但我真的无法复制我在互联网上找到的一篇文章。 该代码在 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。
再次,对于这样一个基本问题,我深表歉意,但我只是尝试了很多不同的方法,但没有任何效果,所以我决定从我的初学者的盒子里问你们。
提前谢谢你。
法布里西奥
【问题讨论】:
-
我很好奇你为什么用 R 中的 != 替换了 Stata 中的 == 运算符。你不希望发生相反的情况吗?也许您可以给我们一个小数据样本,并向我们展示预期的行为。同时显示您的代码以及您收到的错误消息或错误结果。
-
嗨大手指,谢谢。这实际上是我试图实施的一种解决方法。首先,我通过复制第二个变量来创建变量。然后我想用 NA 抑制一些值,这些值与第三个变量的条件不匹配。我重新编辑了问题以使其整洁。我收到一条错误消息:命令根本没有运行:错误:意外']' in: (timeuse_2003$TUTIER1CODE!=4 & timeuse_2003$TUTIER2CODE!=1 & timeuse_2003$TUTIER3CODE!=10) | (timeuse_2003$TUTIER1CODE!=4 & timeuse_2003$TUTIER2CODE!=3 & timeuse_2003$TUTIER3CODE!=10))]"
-
ps。我看过很多关于如何根据条件创建变量的帖子,但它们返回逻辑值。我希望使用第二个值而不是 TRUE 或 FALSE 创建我的变量。谢谢。
-
同样,发布您运行的实际代码和收到的错误消息会有所帮助。您在评论中描述的错误与您在问题中发布的代码不匹配。例如,错误提到 timeuse_2003$TUTIER1CODE!=4。您在问题的 R 代码中没有值 4。错误消息表明括号不匹配,但如果没有看到您的实际代码,就不可能知道它发生在哪里。
-
感谢您的指导,BigFinger。现在我刚刚复制了整个代码和错误消息。我想从你那里知道代码是否有意义,考虑到我的目的:从第二个变量创建一个新变量,给定第三个变量的(许多 AND/OR)条件。你能给我举个例子吗?所以我可以尝试推导出一个替代方案。我的目的是通过这种复制来流利地使用 R。
标签: r variables multiple-conditions