楼主: chenjiesmile
28605 16

[数据管理求助] 怎样在stata中处理一些文字性的变量值 [推广有奖]

11
黃河泉 在职认证  发表于 2018-8-15 11:58:45
lizzyqueen 发表于 2018-8-14 22:14
同问,如何在stata中,把“满意”“不满意”等文字型信息转换成数字啊?
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

12
lizzyqueen 发表于 2018-8-17 11:17:46
谢谢您,问题已解决。非常感谢!

13
lizzyqueen 发表于 2018-8-17 11:18:13
黃河泉 发表于 2018-8-15 11:58
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明) ...
谢谢您,问题已解决,非常感谢!

14
俊杰王子 发表于 2018-11-29 01:36:04
黃河泉 发表于 2018-8-15 11:58
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明) ...
黄老师您好,为何我的数据中省份字符变量已经转化为数值变量后,我想删除某一个省份,还是报告出错呢,我的命令是 drop if  province==北京,加引号也不对,不知道该如何做,谢谢您

15
黃河泉 在职认证  发表于 2018-11-29 07:09:28
俊杰王子 发表于 2018-11-29 01:36
黄老师您好,为何我的数据中省份字符变量已经转化为数值变量后,我想删除某一个省份,还是报告出错呢,我 ...
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
2.        并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

16
baidingzong7 发表于 2019-5-18 11:41:50
lizzyqueen 发表于 2018-8-14 22:14
同问,如何在stata中,把“满意”“不满意”等文字型信息转换成数字啊?
试一下使用tab variable, (gen newvariable)?这样可以生成两个虚拟变量,一个是满意时取1,另一个是满意时取0,如果需要drop掉一些数据的话就可以通过虚拟变量操作了

17
赵安豆 发表于 2025-9-19 14:13:06
处理文本型变量,首先需要理解Stata中的字符型和数值型数据的区别。简单来说,字符型数据是用来存储文字信息的,而数值型数据则是用来存储数字的。在你的例子中,“是”、“否”、“未婚”、“已婚”等属于字符型数据。

当你尝试使用 `drop if c1a=="是"` 命令时出现错误提示“type mismatch”,这通常意味着Stata认为`c1a`变量不是字符型,而是数值型。尽管你可能看到的是文本显示(如"是"),但这些可能是编码为特定数字值的文本标签。

如果你需要将这样的文本变量转换成可以进行逻辑判断的形式,你可以尝试以下步骤:

### 步骤 1: 检查数据类型
使用`describe c1a`命令查看`c1a`变量的数据类型。如果它显示为字符型(str),则可以直接处理;如果是数值型,可能需要进一步转换。

### 步骤 2: 转换数据类型或标签
- 如果`c1a`是字符型且直接包含文本,如“是”、“否”,你可以尝试:
  
  ```stata
  drop if c1a=="是"
  ```

- 如果`c1a`是带有标签的数值变量(例如,“是”被标记为数字1,“否”标记为0),你需要先查看其值和标签:

  ```stata
  label list c1a
  ```

  然后,你可以基于这些数值进行操作:
  
  ```stata
  drop if c1a==1 // 如果"是"被编码成数字1
  ```

### 步骤 3: 使用`destring`或`encode`
- `destring`: 当你的变量实际上包含了可以转换为数值的字符串(如“1”、“2”),但它们是以字符形式存储时,你可以使用`destring`来尝试将其转回数字:

  ```stata
  destring c1a, replace // 这将尝试把可识别的数字字符串转为实际数值
  ```

- `encode`: 如果你的变量是字符型,并且你希望根据文本内容编码成新的数值变量,可以使用`encode`命令。

### 示例:
假设`c1a`中"已婚"、"未婚"、"离婚"和"丧偶"需要转换为数字代码:

```stata
encode c1a, generate(marital_status)
```

这样`marital_status`将是一个新的变量,其中的值是根据原始字符编码而成。之后你可以基于这个新变量进行数据筛选。

以上步骤应该可以帮助你处理你的问题。如果有具体的错误或疑问,可以进一步描述以便获得更详细的帮助。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 15:55