楼主: whm22
981 5

[数据管理求助] stata如何拼接多个文本变量且不重复? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.1532
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
865 点
帖子
58
精华
0
在线时间
181 小时
注册时间
2022-12-3
最后登录
2025-4-26

楼主
whm22 发表于 2024-5-2 23:14:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据结构如图:

想实现按STKCD YEAR分组,将同公司同一年的ViolationYear连接。比如选中的两行变为:
STKCD YEAR ViolationYear
000002 2016 2015;2016
即实现同公司同一年ViolationYear的汇总。ViolationYear中年份不重复出现。
求大佬解答!!!


二维码

扫码加我 拉你入群

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

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

关键词:Stata tata Violation ATION stkcd

微信图片_20240502231605.png (6.64 KB)

微信图片_20240502231605.png

沙发
gg20192019 在职认证  发表于 2024-5-2 23:46:02 来自手机
whm22 发表于 2024-5-2 23:14
数据结构如图:

想实现按STKCD YEAR分组,将同公司同一年的ViolationYear连接。比如选中的两行变为:
谢谢分享

藤椅
赵安豆 发表于 2024-5-3 13:47:43
要在Stata中实现你的需求,我们可以使用`egen`命令结合`group()`函数来生成唯一的组标识符,然后用`levelsof`以及`foreach`循环来遍历每个组合,最后使用`concatenate`函数来拼接不重复的文本变量。不过,需要注意的是Stata直接操作字符串的能力相对有限,因此我们可能需要一些额外步骤来确保拼接的文本变量中不包含重复的年份。

这里提供一个基于你需求的示例步骤,假设你的数据集名为`data`,并且变量名已经正确设置为`STKCD`、`YEAR`和`ViolationYear`。

1. **生成组标识符**:
首先,我们需要为每个`STKCD`和`YEAR`的组合生成一个唯一的标识符。

```stata
egen group_id = group(STKCD YEAR), label
```

2. **创建一个新的文本变量用于拼接**:
我们创建一个新的文本变量`Violations`用于存储最终的拼接结果。

```stata
gen Violations = ""
```

3. **遍历每个组合,拼接不重复的年份**:
这一步稍微复杂,因为Stata的字符串操作能力有限,我们需要一些额外的步骤来确保不重复地拼接年份。

```stata
levelsof group_id, local(groups) // 获取所有唯一的组合标识符

foreach g in `groups` {
    tempvar temp_violation
    gen `temp_violation' = ViolationYear if group_id == `g' & !missing(ViolationYear)
    duplicates drop `temp_violation' if `temp_violation' != "", force // 去除重复的年份
    egen temp_concat = concat(`temp_violation'), punct(";") // 拼接字符串,使用";"作为分隔符
    replace Violations = temp_concat[1] if group_id == `g' // 为每个组合填入拼接后的字符串
    drop `temp_violation' temp_concat
}
```

注意:上述代码中使用了`tempvar`来创建临时变量,这样做的好处是避免污染你的数据集。同时,我们使用了`duplicates drop`来去除重复的年份,确保最终拼接的字符串中不会出现重复的年份值。

4. **结果检查**:
最后,你可以检查`Violations`变量来确认拼接结果是否符合预期。

请注意,上述代码可能需要根据你的具体数据结构进行适当的调整。特别是在处理字符串和组标识符时,Stata的操作可能会有所不同,具体取决于你的数据集的结构和特点。希望这个解答能帮助到你解决问题!

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



板凳
whm22 发表于 2024-5-3 15:54:28
赵安豆 发表于 2024-5-3 13:47
要在Stata中实现你的需求,我们可以使用`egen`命令结合`group()`函数来生成唯一的组标识符,然后用`levelso ...
小豆~请问在循环那一步报错`groups` invalid name
r(198);

是什么文图

报纸
啃啃割11 发表于 2024-5-10 01:13:31
问gpt怎么用python实现吧

地板
苏夏Carolyn 发表于 2024-12-25 15:10:52
whm22 发表于 2024-5-3 15:54
小豆~请问在循环那一步报错`groups` invalid name
r(198);
把foreach g in `groups‘ {
换成foreach g in `groups' {

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-31 10:36