翻译 Stata Loop

Translating Stata Loop

我想将以下 Stata 循环翻译成 R:

foreach day of numlist 1/7 {;
replace dywt = 1/7 * 1/Freq[`day',1] if interview_day==`day';
}

数据(R 输出):

> INTERVIEW_DAY[1:15]
 [1] 5 6 6 4 4 4 1 2 6 4 6 7 6 3 6

> Freq
[1] 0.14353969 0.14795762 0.14089618 0.14074198 0.14194271 0.14295769 0.14196413

> F
[1] 20720

> DYWT[1:15]
 [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

提前致谢。

R中,如果它们都是vector,那么等同于通过获取相应的[来替换NA向量('DYWT') =31=] 对于 'INTERVIEW_DAY' 的每个序列值(Freq[INTERVIEW_DAY] - 因为 INTERVIEW_DAY 是一个数字向量序列,可以用作 'Freq' 的位置向量),除以1, 乘以 1/max(INTERVIEW_DAY)

DYWT <- 1/max(INTERVIEW_DAY) * 1/Freq[INTERVIEW_DAY]

或者如果是根据唯一元素的个数,也可以

DYWT <- 1/length(unique(INTERVIEW_DAY)) * 1/Freq[INTERVIEW_DAY]

或者是 1/7 其中 7 是 'INTERVIEW_DAY' 中唯一元素的数量(如果缺少某些索引,那么最好使用 1/7)

数据

INTERVIEW_DAY <- scan(text = '5 6 6 4 4 4 1 2 6 4 6 7 6 3 6', what = integer())
Freq <- scan(text = '0.14353969 0.14795762 0.14089618 0.14074198 0.14194271 0.14295769 0.14196413', what = numeric())