【发布时间】:2017-05-28 18:10:23
【问题描述】:
我有一个简单的问题要解决,我需要使用Stata 来解决。我对R 比较熟悉,所以我从那里开始解决问题以确保我理解问题,然后想翻译成Stata。
类似问题的 R 代码
# Generate dummy data
n <- 30L
df <- data.frame(id = seq_len(n))
set.seed(10L)
question <- c("qa", "qb", "qc")
for (q in question) {
for (a in 1L:6L) {
df[, paste(q, a, sep = "_")] <- sample(c(0L:10L, NA),
size = n,
replace = TRUE)
}
}
# Now based on certain "activities" generate new variables
activity <- c(1, 4, 5, 6)
for (i in activity) {
# If answer to question c for that activity is equal to 3
# then value of the new variable is a multiple of the other two
vara <- paste0("qa_", i)
varb <- paste0("qb_", i)
varc <- paste0("qc_", i)
varn <- paste0("new", i)
df[, varn] <- as.numeric(rep(NA, times = n))
for (j in seq_len(n)) {
if (is.na(df[j, varc])) {
# Do nothing
} else if (df[j, varc] == 3) {
df[j, varn] <- df[j, vara] * df[j, varb]
}
}
}
我在 Stata 中测试过(玩过)的东西
numlist "1 4 5 6"
global act `r(numlist)'
gen rows = _n
foreach i of global act {
di "qa_" + `i'
di "qb_" + `i'
di "qc_" + `i'
foreach j in rows {
di `j'
}
}
很难找到下一步。
【问题讨论】:
标签: stata