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