楼主: 大力dali
582 12

[编程问题求助] merge多对一没结果 [推广有奖]

  • 0关注
  • 0粉丝

高中生

65%

还不是VIP/贵宾

-

威望
0
论坛币
15 个
通用积分
0.0121
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
247 点
帖子
13
精华
0
在线时间
48 小时
注册时间
2022-11-19
最后登录
2024-8-8

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我是用日个股回报率的日期对应指数收益率,个股回报率为master文件,指数收益率为using数据,因为个股回报率不同股票都是对应相同时期指数收益率,单就是没有matched的项,哪里出错求指导!本人小白,描述可能不准确。

merge m:1 交易时间 using 市场回报率.dta, nogen keep(1 3) keepusing(市场回报率)

    Result                      Number of obs
    -----------------------------------------
    Not matched                       655,258
        from master                   655,258  
        from using                          0  

    Matched                                 0  
    -----------------------------------------

二维码

扫码加我 拉你入群

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

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

关键词:Merge Matched Master Number Result

stata.png (93.12 KB)

stata.png

沙发
sun_man 在职认证  发表于 2023-10-24 14:05:36 |只看作者 |坛友微信交流群
合并结果显示没有匹配的项,即在个股回报率文件中找不到与指数收益率文件相对应的交易时间。这可能是由于两个数据文件中的交易时间格式不匹配导致的。可以使用Stata中的`describe`命令来查看变量的格式和属性。如果交易时间变量格式不匹配,可以使用Stata中的日期转换函数(如`date()`或`ymd()`)将其转换为相同的格式,以便进行正确的匹配。另外,还得确保个股回报率文件和指数收益率文件中的交易时间变量命名一致,以便`merge`命令能够正确识别并进行匹配。

使用道具

藤椅
512661101 发表于 2023-10-24 14:16:46 |只看作者 |坛友微信交流群
谢谢分享!

使用道具

板凳
大力dali 学生认证  发表于 2023-10-24 14:30:35 |只看作者 |坛友微信交流群
sun_man 发表于 2023-10-24 14:05
合并结果显示没有匹配的项,即在个股回报率文件中找不到与指数收益率文件相对应的交易时间。这可能是由于两 ...
感谢指导,但是我反复核对了变量命名、变量格式,已经调整为相同的了,还是没有匹配项,是代码有问题吗

使用道具

报纸
sun_man 在职认证  发表于 2023-10-24 14:53:46 |只看作者 |坛友微信交流群
大力dali 发表于 2023-10-24 14:30
感谢指导,但是我反复核对了变量命名、变量格式,已经调整为相同的了,还是没有匹配项,是代码有问题吗
你要不把代码复制给我 我给你看看?

使用道具

地板
sun_man 在职认证  发表于 2023-10-24 14:57:47 |只看作者 |坛友微信交流群
大力dali 发表于 2023-10-24 14:30
感谢指导,但是我反复核对了变量命名、变量格式,已经调整为相同的了,还是没有匹配项,是代码有问题吗
咋看看数据排序问题呢,个股回报率和指数收益率的数据是否按照日期进行了排序,merge命令需要确保两个数据集按照相同的顺序进行匹配。可以使用sort命令按照日期对数据进行排序。

使用道具

7
大力dali 学生认证  发表于 2023-10-24 15:06:14 |只看作者 |坛友微信交流群
sun_man 发表于 2023-10-24 14:57
咋看看数据排序问题呢,个股回报率和指数收益率的数据是否按照日期进行了排序,merge命令需要确保两个数据 ...
import excel 事件日期.xlsx, firstrow clear
save 事件日期.dta, replace
forvalues i=1/2 {
import delimited TRD_Dalyr`i'.csv, encoding(utf-8) clear
save 日个股回报率`i'.dta, replace
}
clear
forvalues i=1/2 {
   append using 日个股回报率`i'.dta
}
rename trddt 交易日期
rename dretwd 个股回报率
save 日个股回报率.dta, replace
import excel 综合日市场回报率.xlsx, firstrow clear
keep if 综合市场类型==21
rename 考虑现金红利再投资的综合日市场回报率流通市值加权平均法 市场回报率
save 市场回报率.dta, replace
use 日个股回报率.dta, clear
merge m:1 交易日期 using 市场回报率.dta, nogen keep(1 3) keepusing(市场回报率)
多谢多谢

使用道具

8
大力dali 学生认证  发表于 2023-10-24 15:08:58 |只看作者 |坛友微信交流群
sun_man 发表于 2023-10-24 14:57
咋看看数据排序问题呢,个股回报率和指数收益率的数据是否按照日期进行了排序,merge命令需要确保两个数据 ...
两个文件的数据日期都是按照时间顺序排列的

使用道具

9
大力dali 学生认证  发表于 2023-10-24 15:54:08 |只看作者 |坛友微信交流群
merge m:1 交易日期 using 市场回报率.dta

    Result                      Number of obs
    -----------------------------------------
    Not matched                       657,449
        from master                   655,258  (_merge==1)
        from using                      2,191  (_merge==2)

    Matched                                 0  (_merge==3)
    -----------------------------------------
merge之后没有横向合并,而是纵向相加了

使用道具

10
917968079 发表于 2023-10-24 16:23:31 |只看作者 |坛友微信交流群
你这个问题应该是你把日期encode了,不要encode不然匹配肯定不对

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 20:36