楼主: hzd001
1959 7

[数据管理求助] 请问如何针对字符型数据reshape分类,或者别的方案? [推广有奖]

  • 1关注
  • 1粉丝

已卖:628份资源

硕士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
899 个
通用积分
2.3186
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
738 点
帖子
37
精华
0
在线时间
210 小时
注册时间
2016-3-10
最后登录
2024-8-26

楼主
hzd001 发表于 2019-2-14 15:23:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请教:数据类型在最下,如何实现下方的结果:
id year P2503 P2504 P2505 P2515 P2599
4 2010 1      .           .          1         1

也就是把TypeID转换为具体的代码(P开头的)。进行分类分析。

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long id int year str41 TypeID
  4. 4 2010 "P2503,P2515,P2599"      
  5. 4 2011 "P2503,P2515,P2599"      
  6. 4 2012 "P2503,P2515,P2599"      
  7. 4 2013 "P2503,P2515,P2599"      
  8. 4 2008 "P2503,P2599"            
  9. 4 2009 "P2503,P2599"            
  10. 4 2010 "P2503,P2599"            
  11. 5 2007 "P2503,P2504,P2505,P2599"
  12. 5 2008 "P2503,P2504,P2505,P2599"
  13. 5 2009 "P2503,P2504,P2505,P2599"
  14. end
复制代码



二维码

扫码加我 拉你入群

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

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

关键词:reshape 字符型数据 Shape RES APE

沙发
黃河泉 在职认证  发表于 2019-2-14 16:59:27
Nick Cox 建议:
  1. // Nick Cox
  2. replace TypeID = subinstr(TypeID, ",", " ", .)
  3. gen N = wordcount(TypeID)
  4. expand N
  5. bysort id year : gen which = word(TypeID, _n)

  6. gen z = 1
  7. reshape wide z , i(id year) j(which) string
  8. drop N TypeID
  9. rename (z*) (*)
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
hzd001 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
hzd001 发表于 2019-2-14 17:06:03
黃河泉 发表于 2019-2-14 16:59
Nick Cox 建议:
谢谢黄老师!我学习一下

板凳
黃河泉 在职认证  发表于 2019-2-14 17:24:13
hzd001 发表于 2019-2-14 17:06
谢谢黄老师!我学习一下
你的
  1. 4 2010 "P2503,P2515,P2599"

  2. 4 2010 "P2503,P2599"
复制代码
是什么情况?例子举错了吗?

报纸
hzd001 发表于 2019-2-15 14:48:12
黃河泉 发表于 2019-2-14 17:24
你的是什么情况?例子举错了吗?
例子没错,是同一事件在相同年度的不同案例中重复出现,但是统计上只计算这个事件在该年发生过

地板
黃河泉 在职认证  发表于 2019-2-15 15:38:03
hzd001 发表于 2019-2-15 14:48
例子没错,是同一事件在相同年度的不同案例中重复出现,但是统计上只计算这个事件在该年发生过
In that case, please try (by Nick Cox):
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long id int year str41 TypeID
  4. 4 2010 "P2503,P2515,P2599"      
  5. 4 2011 "P2503,P2515,P2599"      
  6. 4 2012 "P2503,P2515,P2599"      
  7. 4 2013 "P2503,P2515,P2599"      
  8. 4 2008 "P2503,P2599"            
  9. 4 2009 "P2503,P2599"            
  10. 4 2010 "P2503,P2599"            
  11. 5 2007 "P2503,P2504,P2505,P2599"
  12. 5 2008 "P2503,P2504,P2505,P2599"
  13. 5 2009 "P2503,P2504,P2505,P2599"
  14. end

  15. replace TypeID = subinstr(TypeID, ",", " ", .)
  16. bysort id year : replace TypeID = TypeID[_n-1] + " " + TypeID if _n > 1
  17. bysort id year : replace TypeID = TypeID[_N] if _N > 1
  18. bysort id year : keep if _n == _N
  19. gen N = wordcount(TypeID)
  20. expand N
  21. bysort id year : gen which = word(TypeID, _n)
  22. drop N TypeID
  23. duplicates drop id year which , force
  24. gen z = 1
  25. reshape wide z , i(id year) j(which) string
  26. rename (z*) (*)
  27. list , sepby(id)
复制代码

7
黃河泉 在职认证  发表于 2019-2-15 15:38:36
hzd001 发表于 2019-2-15 14:48
例子没错,是同一事件在相同年度的不同案例中重复出现,但是统计上只计算这个事件在该年发生过
or (by William Lisowski)
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long id int year str41 TypeID
  4. 4 2010 "P2503,P2515,P2599"      
  5. 4 2011 "P2503,P2515,P2599"      
  6. 4 2012 "P2503,P2515,P2599"      
  7. 4 2013 "P2503,P2515,P2599"      
  8. 4 2008 "P2503,P2599"            
  9. 4 2009 "P2503,P2599"            
  10. 4 2010 "P2503,P2599"            
  11. 5 2007 "P2503,P2504,P2505,P2599"
  12. 5 2008 "P2503,P2504,P2505,P2599"
  13. 5 2009 "P2503,P2504,P2505,P2599"
  14. end

  15. split TypeID, parse(,)
  16. drop TypeID
  17. gen seq = _n
  18. reshape long TypeID, i(seq) j(num)
  19. drop if TypeID==""
  20. list if seq==1, clean noobs

  21. drop num
  22. generate one = 1
  23. reshape wide one, i(seq id year) j(TypeID) string
  24. rename (one*) (*)
  25. list if seq==1, clean noobs

  26. collapse (sum) P*, by(id year)
  27. list, sepby(id) noobs
复制代码

8
hzd001 发表于 2019-2-16 17:08:42
黃河泉 发表于 2019-2-15 15:38
In that case, please try (by Nick Cox):
好的,谢谢黄老师!

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

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