Stata数据清理

Stata Data cleaning

我在 Stata 数据转换方面需要一些帮助。

我有一个调查,用户可以用编码为整数 98 的“无响应”来回答。变量可以是不同的数据类型。我需要将用户的“无响应”/98 的数量获取到一个单独的变量中。

我附上了数据集示例:

UserN   Q1    Q2       Q3       Q4    Q5          Q6      NewCreatedColumn
            
User1    11 "male"   "12:55pm"  98  "Answer1"   "other"     1
User2    98 "female" "1:00am"   98  "AnswerX"   "Batman"    2
User3    16 "male"   "1:00am"   34  "other"     "superman"  0
User4    98 "female" "1:00am"   98  "other"      "Dog"      2
User5    66 "male"   "1:00am"   98  "Life"       "Cat"      1

这在 python 中相当容易,数据框中的每个用户都是一个列表,您可以在列表中扫描整数 98。

Stata 中是否有等效项?

Sample Data

感谢数据示例,下面进行了改进以成为可重现的代码。另请参见 Stata 中的 help dataex(或古代 Stata 中的 search dataex)。

clear 
input str5 UserN   Q1  str7 (Q2       Q3)   Q4 str8 (Q5 Q6)      NewCreatedColumn
User1    11 "male"   "12:55pm"  98  "Answer1"   "other"     1
User2    98 "female" "1:00am"   98  "AnswerX"   "Batman"    2
User3    16 "male"   "1:00am"   34  "other"     "superman"  0
User4    98 "female" "1:00am"   98  "other"      "Dog"      2
User5    66 "male"   "1:00am"   98  "Life"       "Cat"      1
end 

ds Q* , has(type numeric)
egen wanted = anycount(`r(varlist)'), values(98)

为了计算字符串foo,一个循环就可以了

ds Q*, has(type string) 
gen WANTED = 0 
quietly foreach v in `r(varlist)' { 
    replace WANTED = WANTED + (`v' == "foo")  
}