【问题标题】:For loop conversion from Stata to R从Stata到R的循环转换
【发布时间】:2018-06-28 01:39:22
【问题描述】:

我正在尝试了解有关 R 循环的更多信息,并且我想将以下 Stata 循环转换为 R:

generate newvar=0

forvalues i=1/25 {
    replace newvar=1 if PR`i'=="8512" | PR`i'=="8521"  
}

阅读其他帖子对我来说不是很清楚,因此这篇新帖子。

【问题讨论】:

标签: r for-loop stata


【解决方案1】:

这是一个稍微做作的例子。统计:

sysuse auto
generate newvar = 0
generate rep79 = rep78
forvalues i = 78/79 {
  replace newvar = 1 if rep`i'==3 | rep`i'==4 
}
quietly sum newvar
di r(mean)
.64864865

R:

d <- foreign::read.dta("http://www.stata-press.com/data/r9/auto.dta")
d$newvar <- 0
d$rep79 <- d$rep78
for (i in 78:79) {
  d$newvar <- replace(d$newvar, d[[paste0("rep", i)]] %in% c(3, 4), 1)
}
mean(d$newvar)
# [1] 0.6486486

【讨论】:

  • 谢谢伟煌。你能解释一下这部分的 d[[ ]] 吗?这是在做什么?可以添加类似 d[[paste0("rep", i)]] %in% c(3, 4) & d[[paste0("trunk")]] %in% c(11, 12)使选择更具条件?
  • 第一个问题请参见stackoverflow.com/questions/1169456/…。对于第二个问题,简短的回答是“是”,但如果您有后续问题,我建议您提出一个新问题,因为 SO cmets 并没有真正为扩展讨论做好准备。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多