翻译 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())
我想将以下 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())