Stata 如何基于固定条件填充列中字符串变量的缺失值
我想检查如何为缺少值的单元格填充列Stata 如何基于固定条件填充列中字符串变量的缺失值,stata,Stata,我想检查如何为缺少值的单元格填充列aktype(同一pidlink的值范围始终固定为下面列出的11种值类型)。我有大约17000多个观测数据缺失 值的范围如下所示: A. B C D E G H 我 J K L 我尝试了以下命令,但无效:- foreach x of varlist aktype=1/11 { replace aktype = "A" in 1 if aktype=="" replace aktype = "B" in 2 if aktype=="" replace a
aktype
(同一pidlink的值范围始终固定为下面列出的11种值类型)。我有大约17000多个观测数据缺失
值的范围如下所示:
A.
B
C
D
E
G
H
我
J
K
L
我尝试了以下命令,但无效:-
foreach x of varlist aktype=1/11 {
replace aktype = "A" in 1 if aktype==""
replace aktype = "B" in 2 if aktype==""
replace aktype = "C" in 3 if aktype==""
replace aktype = "D" in 4 if aktype==""
replace aktype = "E" in 5 if aktype==""
replace aktype = "G" in 6 if aktype==""
replace aktype = "H" in 7 if aktype==""
replace aktype = "I" in 8 if aktype==""
replace aktype = "J" in 9 if aktype==""
replace aktype = "K" in 10 if aktype==""
replace aktype = "L" in 11 if aktype==""
}
如果您能建议使用正确的命令,我们将不胜感激。非常感谢 我将生成一个变量
AK
,该变量的字母a-K位于位置1-11(以及12-22和23-33,依此类推)。将缺少的值替换为此变量的值AK
* generate data
clear
set obs 20
generate aktype = ""
replace aktype = "foo" in 1/1
replace aktype = "bar" in 10/12
* generate variable with letters A-K
generate AK = char(65 + mod(_n - 1, 11))
* fill missing values
replace aktype = AK if missing(aktype)
list
这将产生以下结果
. list
+-------------+
| aktype AK |
|-------------|
1. | foo A |
2. | B B |
3. | C C |
4. | D D |
5. | E E |
|-------------|
这首先是针对“它不起作用”的评论 一般来说,在这类论坛中,您应该始终明确地说出发生了什么,即代码在哪里崩溃以及结果是什么(例如,您收到了什么错误消息)。如有必要,补充为什么这不是我们想要的 具体地说,在这种情况下,斯塔塔只能得到
foreach x of varlist aktype=1/11
这是非法的(对Stata程序员来说也是不清楚的)
您可以在变量列表上循环。在这种情况下,在单个变量上循环aktype
是合法的。(这通常是毫无意义的,但这是风格,而不是语法。)所以这是合法的:
foreach x of varlist aktype
顺便说一下,您将x
定义为循环参数,但从不在循环中引用它。这并不违法,但很不寻常
您还可以在numlist上循环,例如
虽然
forval x = 1/11
这是一种更直接的方法。所有这些都遵循相关命令的语法图,其中不明确允许的是禁止的
在需要循环使用varlist和numlist的情况下,需要使用不同的语法,但最好的方法取决于具体的问题
现在第二个问题是:我看不到问题中的任何类型的规则,通过
L
为A
分配值,因此不能给出积极的建议 非常感谢你!我会尝试一下。非常感谢您的回复和建议。我不是一个程序员,也是Stata的新手(很抱歉,我没有说清楚)。下次提出问题时,我会更具体一些。
forval x = 1/11