r - 翻译Stata循环
问题描述
我想将以下 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
s,那么等价的方法是NA
通过为“INTERVIEW_DAY”的每个序列值获取相应的“Freq”来替换向量(“DYWT”)(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]
或者它是“INTERVIEW_DAY”1/7
中7
唯一元素的数量(如果缺少某些索引,那么最好使用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())
推荐阅读
- html - Angular 8过滤器:保留文本区域输入的换行符
- python - 通过 Python 根据 if 条件添加新行
- c# - SMTP 地址没有与之关联的邮箱
- spring-boot - 带有 Keycloak SSO 身份验证的 Spring+Vue.js 应用程序:XSS 堵塞?
- excel - 将 Kubernetes 从 v1.11 升级到 v1.15
- laravel - 在 laravel 5.8 中的数据库迁移中已经存在基表或视图
- python - 根据 12 小时格式创建时间箱作为 pandas 中的列
- angular - 如何让 Angular 应用程序在启动时读取 cookie
- javascript - 图表与鼠标悬停时的旧值重叠
- python - OpenCV 中的 mp4 视频编解码器