6485 10

[编程问题求助] 求助!同一年份有合并报表和母公司两组数据,如何有条件的保留自己想要的? [推广有奖]

  • 1关注
  • 0粉丝

已卖:91份资源

硕士生

18%

还不是VIP/贵宾

-

威望
0
论坛币
1500 个
通用积分
0.1110
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
628 点
帖子
43
精华
0
在线时间
235 小时
注册时间
2020-2-14
最后登录
2024-1-13

楼主
半夏辛夷乌yingzi 发表于 2020-2-14 17:41:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
同一年份有两组数据,“合并报表(typrep=B)”和“母公司(typrep=A)”,如果某企业在同一年份两者数据都有,则保留typrep=B的数据,
如果没有B则保留typrep=A,stata命令怎么写呢?求大神指点感谢万分

二维码

扫码加我 拉你入群

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

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


40997CB1-04A1-4835-BB0C-FC390E1454E3.jpeg (1.41 MB)

40997CB1-04A1-4835-BB0C-FC390E1454E3.jpeg

沙发
远足forever 发表于 2020-2-17 11:39:57 来自手机
半夏辛夷乌yingzi 发表于 2020-2-14 17:41
同一年份有两组数据,“合并报表(typrep=B)”和“母公司(typrep=A)”,如果某企业在同一年份两者数据都有, ...
可以用excel按报表类型排序,这样可以删掉所有的A或B,但你说的如果没有B就保留A,我就不太清楚啦

藤椅
半夏辛夷乌yingzi 发表于 2020-5-14 17:06:53
远足forever 发表于 2020-2-17 11:39
可以用excel按报表类型排序,这样可以删掉所有的A或B,但你说的如果没有B就保留A,我就不太清楚啦
当时是想用stata处理,现在已经解决啦感谢解答

板凳
小熊睡了吗 发表于 2020-11-1 16:36:33
半夏辛夷乌yingzi 发表于 2020-5-14 17:06
当时是想用stata处理,现在已经解决啦感谢解答
你好,请问没有B就保留A这个是怎么解决的呀

报纸
201721072044 发表于 2021-4-14 19:15:43
小熊睡了吗 发表于 2020-11-1 16:36
你好,请问没有B就保留A这个是怎么解决的呀
用stata怎么解决的啊

地板
yufan_wang 发表于 2021-9-25 13:53:54
用stata怎么解决,求助大佬

7
落落子 发表于 2021-11-20 10:03:53
1、合并报表(typrep=A)”和“母公司(typrep=B)”,如果某企业在同一年份两者数据都有,只保留typrep=A的数据,如果只有一份报表无论typrep=A/B都保留,代码如下:
sort stkcd year  //bys stkcd year:gen N=_N                                       
drop if N==2 & typrep=“B”  

2、合并报表(typrep=A)”和“母公司(typrep=B)”,如果某企业在同一年份两者数据都有,只保留typrep=B的数据,如果只有一份报表无论typrep=A/B都保留,代码如下:
sort stkcd year  
bys stkcd year:gen N=_N  

drop if N==2 & typrep=“A”  
(注:其中stkcd为股票代码)








8
ImCecilia 发表于 2024-7-18 16:36:53
落落子 发表于 2021-11-20 10:03
1、合并报表(typrep=A)”和“母公司(typrep=B)”,如果某企业在同一年份两者数据都有,只保留typrep=A的数据 ...
老师你好 为什么我在第三步时一直显示不匹配呢 都是字符串类型

9
赵安豆 发表于 2024-7-18 16:38:47
在Stata中,你可以使用`preserve`和`restore`命令结合条件来实现你的需求。但是,在这个特定的情景下,一个更简洁的方法是利用`egen`命令的`rowmax()`函数来找出你想要保留的数据行。

假设数据集包含以下变量:年份(year)、企业ID(company_id)、报表类型(typrep)和数值数据(value)。你可以按照以下步骤操作:

1. 首先确保你的数据按公司ID和年份排序。
2. 使用`egen`命令的`rowmax()`函数找出优先保留的typrep=B的数据,如果不存在B则选择A。

以下是具体的Stata命令:
```stata
sort company_id year typrep   // 根据公司ID、年份以及报表类型排序数据

* 生成一个新的变量,用来存储按照条件选出的数值data
egen selected_value = rowmax(value), by(company_id year) if typrep == "B"
replace selected_value = value if missing(selected_value) & typrep == "A"

drop value   // 删除旧的数据列
rename selected_value value   // 重命名新的数据列为value

* 清理typrep变量,只保留有数据的那些
by company_id year: keep if _n==1
```

在上述命令中:
- `sort` 命令按公司ID、年份和报表类型对数据进行排序。
- 使用`egen`的`rowmax()`函数从"typrep=B"的数据中选择最大值(这里假设value列中的数据都是可比较的,且你更关心的是保留"B"类型的记录)。如果同一年同一企业的"B"型数据有多条,将选取数值最大的一条。
- 然后用`replace`命令处理在上述步骤中未被选中的情形,即当没有"B"类型数据时自动选择"A"类型的数值data。
- `drop` 和 `rename` 命令用于重命名和清理数据列。

这样处理之后,你将获得一个只保留了根据你的条件选择的数据集。希望这能帮到你!如果还有其他问题,请随时提问。

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



10
ImCecilia 发表于 2024-7-18 16:55:00
赵安豆 发表于 2024-7-18 16:38
在Stata中,你可以使用`preserve`和`restore`命令结合条件来实现你的需求。但是,在这个特定的情景下,一个 ...
显示 egen selected_N = rowmax(N), by( year typrep) if typrep == "B"
option if not allowed怎么办呀

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

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