r - 将操作数据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库,特别是ifelse和reduce函数,我使用以下代码:
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?(如果您有更简单的方法,那也很棒)。
解决方案
根据您提供的信息。尝试这个
library(dplyr)
new_var=0
database%>%
mutate(new_variable=ifelse(oldvariable!=lag(oldvariable),1,new_var)
推荐阅读
- java - 对每个键的映射值求和
- c# - 如何获得与 UnityEngine.SystemInfo.deviceUniqueIdentifier 中相同的硬件 ID?
- csv - 如何使用 VBScript 在循环内读取 CSV 文件
- python - 如何为每个用户检索所有用户名和一个布尔标志,以表明他们的成员资格?
- java - 旋转视图后约束会发生什么?
- vue.js - 如何将计算用于对象属性?
- javascript - 如何在没有多个属性的语义-ui-vue 下拉列表中显示占位符?
- python - Lotka Volterra 的欧拉方法出错了?
- python - 如何创建自定义 keras 层“最小池化”但忽略零?
- java - 如何识别 2 个 HashMap 是否包含具有相同 ID 的对象