楼主: 孙显宗
1550 6

[数据管理求助] stata怎样将两个字符串变量转换成数值型变量?然后相同字符赋值相同? [推广有奖]

  • 2关注
  • 0粉丝

本科生

0%

还不是VIP/贵宾

-

威望
0
论坛币
969 个
通用积分
13.8543
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
81 点
帖子
8
精华
0
在线时间
142 小时
注册时间
2023-2-8
最后登录
2026-2-2

楼主
孙显宗 发表于 2024-8-27 15:50:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
使用encode命令会导致相同字符转换成不同的数值,比如变量x,有北京,上海,天津。变量y有山东,北京,天津,湖南,这样会导致encode或者egen group()对文本赋值不同,这种情况应该怎么处理?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 字符串变量 变量转换 tata 字符串

沙发
917968079 发表于 2024-8-28 09:39:39
直接匹配对应的行政区划代码

藤椅
wdlbcj 学生认证  发表于 2024-8-28 13:57:30
不能使用encode来处理
这是错误的做法
用汉字来匹配就行 花点时间

板凳
孙显宗 发表于 2024-8-28 14:31:17
这个我现在处理好了,现在又有个问题,假设id=1的企业有5个主营业务,然后其他企业有若干个主营业务,我想找出id=1的企业的同行企业个数,该怎么做?我写了一个循环
gen match=0
forvalue v = 1/18{
                forval i = 1/18{
                        replace match = 1 if 主营业务`v' == 主营业务`i'_2 & 主营业务`i'!="" & 主营业务`i'_2!=""
                }
        }
但这样会使match全为1 ,应该是包括自身导致的,怎样除去自身进行匹配啊

报纸
孙显宗 发表于 2024-8-28 14:33:30
同行企业就是主营业务相同就行,主营业务是字符型变量
核心思想就是让id=1的企业用主营业务1和企业企业的主营业务1-18进行匹配,如果有相同则match取1,然后再用主营业务2匹配,有相同则match取1,以此类推

地板
赵安豆 发表于 2024-8-28 14:34:26
在Stata中将两个字符串变量转换为数值型变量,并确保相同字符被赋予相同的数值,可以使用以下步骤:

1. **创建一个新变量**:首先需要创造一个新的数值型变量来存储编码后的结果。但是直接对字符串变量进行编码可能会遇到问题,如果不同的变量中有相同的类别(例如“北京”在两个不同的字符串变量中)。

2. **合并数据集**:为了解决这个问题,可以先将这两个含有重叠类别的字符串变量合并到一起,创造一个临时的数据集,在这个数据集中包含所有的不重复的分类。比如,你有变量x和y,你可以首先生成一个临时数据集z,其中包含了x的所有值以及y中没有被x覆盖的值。

3. **使用`encode`命令**:在新的数据集(或合并后的数据)上运行`encode`命令来创建一个编码过的数值型变量。比如:

   ```
   use x, clear
   preserve
   append using y
   encode variable_name, gen(new_var)
   ```

   这里的`variable_name`是你想编码的变量名称,而`new_var`是新生成的数值型变量。

4. **处理合并问题**:由于我们是在一个包含所有可能值的数据集上运行`encode`命令,这确保了即使在不同的原始变量中出现相同的字符串(如“北京”),它们也将被赋予相同的编码。

5. **恢复数据集并应用编码**:之后你可能需要使用`restore`命令来回到初始状态,并利用生成的编码规则对原来的变量进行转换。但是,在合并和编码步骤后,你可以使用生成的新变量`new_var`在你的分析中代替原始的字符串变量。

6. **清理**:最后不要忘记清理临时文件或数据集,以保持工作环境的整洁。

下面是一个完整的示例:

```
clear all
input str10 x str10 y
"北京" "山东"
"上海" ""
"天津" "北京"
end

append using y, clear

* 将x和y合并到一个新的变量combined中,删除重复值。
egen combined = concat(x y)
replace combined = trim(combined)

* 然后对combined编码
encode combined, gen(combined_code)

* 这里你可以使用combined_code作为新的数值型变量进行分析。

* 清理临时数据和变量(根据需要)
drop x y combined

* 恢复原始数据状态(如果在分析前需要)
restore
```

请注意,上述示例中的代码可能需要根据你的具体数据集进行相应的调整。

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



7
孙显宗 发表于 2024-8-28 14:34:51
917968079 发表于 2024-8-28 09:39
直接匹配对应的行政区划代码
城市这个我只是举个例子,城市的已经有ID作为映射了,但是我想做的是没有对应数值的字符串

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 06:45