【问题标题】:Stata Data cleaningStata 数据清洗
【发布时间】:2021-06-30 11:57:21
【问题描述】:

我需要一些有关 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


    【解决方案1】:

    感谢数据示例,在下面进行了改进以成为可重现的代码。另请参见 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")  
    } 
    

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 2019-03-15
      • 2021-11-21
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2020-10-01
      相关资源
      最近更新 更多