首页 > 解决方案 > 将操作数据Stata转换为R:if和递归值在同一行

问题描述

我在 Stata 中处于中级水平,在那里工作我感觉很舒服。我总是找到在 Stata 而不是 R 中完成最困难任务的方法。但是,我必须在 R 中呈现这个,所以这次我无法避免它(即使 Stata 对我来说总是更简单)。

我想翻译这段代码:

gen new_variable = 0
replace new_variable = 1 if old_variable != old_variable[_n-1]

根据这个网站(https://www.matthieugomez.com/statar/manipulate-data.html),我应该使用dplyr库,特别是ifelsereduce函数,我使用以下代码:

database$new_variable <- mutate(database$new_variable = ifelse(database$old_variable != Reduce(sum, database$old_variable, accumulate = TRUE), 1, database$new_variable))

但是,它不起作用。我知道这段代码可能很乱,但我已经习惯了 Stata。

问题是:如何使用dplyr库成功地将代码从 Stata 转换为 R?(如果您有更简单的方法,那也很棒)。

标签: rdplyrstata

解决方案


根据您提供的信息。尝试这个

library(dplyr)
new_var=0
database%>%
mutate(new_variable=ifelse(oldvariable!=lag(oldvariable),1,new_var)

推荐阅读