【发布时间】:2021-08-13 21:29:56
【问题描述】:
我正在尝试在 r 中复制一些 Stata 代码。在我的 df 中,有一个变量“时间”和一个“曝光”(均为数字,因此具有 1、2、3 等值。
这是原始Stata代码的样子:
replace time = (time - 31) if exposure == 0
这是我尝试过的:
recoded_df <- recoded_df %>% mutate(time = case_when(exposure == 0 ~ (time - 31))
我收到错误消息,即代码中存在“意外符号”。但我不知道我做错了什么。
【问题讨论】:
-
您能否通过
dput(head(data))分享一段可重现的数据?如果您有任何机会获得相关解决方案,这一点至关重要。 -
如果没有要测试的样本数据,您的代码看起来是正确的,只是最后缺少
)。您可能还想设置“无更改”的默认值,mutate(time = case_when(exposure == 0 ~ (time - 31), TRUE ~ time)) -
除了示例数据,我不知道如何从此代码中获取该错误:没有最后一个右括号,R 只是等待我关闭表达式,没有错误。我的猜测是你还有其他东西,可能是
mutate(time = case_when(...) time2 = foo(.)),其中需要一个逗号(不过只是猜测)。 -
@GregorThomas,我也倾向于更喜欢这种方法,明确添加默认值,但
case_when确实默认为NA,这可能是 OP 的意图。 (idk) -
而@r2evans 我的假设是共享的Stata代码不会使未转换的值不适用。