楼主: liangsai8888
1954 11

[数据管理求助] 字符串根据关键字拆分成若干变量求助,论坛币诚心求大神帮忙!! [推广有奖]

  • 4关注
  • 1粉丝

博士生

64%

还不是VIP/贵宾

-

威望
0
论坛币
693 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
11135 点
帖子
105
精华
0
在线时间
513 小时
注册时间
2010-7-22
最后登录
2024-4-22

100论坛币
比如说我现在抓取了200个帖子以及内部评论的数据,但是这些数据是分为两部分的,第一部分是每个帖子的特征,包括标题,网址,回复数量等等,所以有200行,存在帖子数据库中..还有一部分数据是200个帖子中所有评论的数据,存在评论数据库中,包括每一个评论的特征,因为每一个帖子可能包含不同条评论,所以行数不一定,但是每一行都匹配了每个帖子的网址。
     我现在想做的是根据帖子的网址,把帖子数据库中关于帖子属性的变量(比如标题,回复数量)移植到评论那个大数据库中,根据网址匹配,如果网址相同,就赋予评论数据库中每个评论网址匹配的那些值,就是数据合并的问题。


    不知道描述的清不清楚,有没有人能解决,不知道横向关联可不可以作用于这种情况。

最佳答案

ywh19860616 查看完整内容

抱歉。你已经实现了,算给你提供另一种思路吧
关键词:关键字 论坛币 字符串 数据合并 有没有人 网站 helpful reviews 关键字 关键词
沙发
ywh19860616 发表于 2014-11-11 11:19:59 |只看作者 |坛友微信交流群
抱歉。你已经实现了,算给你提供另一种思路吧

  1. clear
  2. input str60 case
  3. "1 reviews 2 hotel reviews 3 helpful votes"
  4. "1 re 2 hotel 3 helpful vote"
  5. "1 reviews 2 hotel s 3 helpful votes"
  6. end



  7. replace case = itrim(case)
  8. gen idd = reverse(case)
  9. gen zip1 = regexs(0) if(regexm(case, "[0-9]"))
  10. gen zip2 = regexs(0) if(regexm(case, ".[0-9]"))
  11. gen zip3 = regexs(0) if(regexm(idd, ".[0-9]"))

  12. gen id1 = strpos(case,zip1)
  13. gen id2 = strpos(case,zip2)
  14. gen id3 = strpos(case,zip3)

  15. gen length1 = length(case)
  16. gen case1 = substr(case,id1 + 1,id2 - 1)
  17. gen case2 = substr(case,id2 + 1 + 2,(id3 - 1)-(id2 + 1))
  18. gen case3 = substr(case,id3 + 1 + 2,.)

  19. keep case case1 case2 case3
  20. list
复制代码

  1. . list

  2.      +----------------------------------------------------------------------------------------+
  3.      |                                      case       case1            case2           case3 |
  4.      |----------------------------------------------------------------------------------------|
  5.   1. | 1 reviews 2 hotel reviews 3 helpful votes    reviews    hotel reviews    helpful votes |
  6.   2. |               1 re 2 hotel 3 helpful vote         re            hotel     helpful vote |
  7.   3. |       1 reviews 2 hotel s 3 helpful votes    reviews          hotel s    helpful votes |
  8.      +----------------------------------------------------------------------------------------+
复制代码
已有 1 人评分经验 学术水平 热心指数 收起 理由
hustchen2012 + 12 + 1 + 1 精彩帖子

总评分: 经验 + 12  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

藤椅
liangsai8888 发表于 2014-11-11 11:49:36 |只看作者 |坛友微信交流群
已经搞定,ends函数可以实现,就是拆分的有点麻烦!

使用道具

板凳
ywh19860616 发表于 2014-11-11 15:18:24 |只看作者 |坛友微信交流群
  1. clear
  2. input str60 case
  3. "a reviews b hotel reviews c helpful votes"
  4. end

  5. split case, p("a " " b " " c ")
  6. drop case1
复制代码

使用道具

报纸
liangsai8888 发表于 2014-11-11 16:29:51 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-11-11 15:18
你理解错我的意思了,我不是只有1个字符串,是很多个,a,b,c是不同实际的数值

使用道具

地板
ywh19860616 发表于 2014-11-11 16:47:38 |只看作者 |坛友微信交流群
liangsai8888 发表于 2014-11-11 16:29
你理解错我的意思了,我不是只有1个字符串,是很多个,a,b,c是不同实际的数值
多个字符串不是问题,这个程序可以用
如果是数字的话,那就用正则表达式就行

使用道具

7
ywh19860616 发表于 2014-11-11 16:49:33 |只看作者 |坛友微信交流群
  1. clear
  2. input str60 case
  3. "1 reviews 2 hotel reviews 3 helpful votes"
  4. "1 re 2 hotel 3 helpful vote"
  5. "1 reviews 2 hotel s 3 helpful votes"
  6. end

  7. split case, p("1 " " 2 " " 3 ")
复制代码

  1. . drop case1

  2. . list

  3.      +-------------------------------------------------------------------------------------+
  4.      |                                      case     case2           case3           case4 |
  5.      |-------------------------------------------------------------------------------------|
  6.   1. | 1 reviews 2 hotel reviews 3 helpful votes   reviews   hotel reviews   helpful votes |
  7.   2. |               1 re 2 hotel 3 helpful vote        re           hotel    helpful vote |
  8.   3. |       1 reviews 2 hotel s 3 helpful votes   reviews         hotel s   helpful votes |
  9.      +-------------------------------------------------------------------------------------+
复制代码

使用道具

8
liangsai8888 发表于 2014-11-12 11:07:11 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-11-11 16:49
你还是没搞明白我的问题,我的意思是现在有很多行,那种字符串格式的变量,每行的a,b,c都是不同的数值,我现在是要把每个a,b,c都提取出来作为不同的变量,不过已经解决,多谢帮忙,虽然麻烦一点。

使用道具

9
liangsai8888 发表于 2014-11-12 11:21:57 |只看作者 |坛友微信交流群
因为上个问题,我自己已经搞定..现在换了个数据处理的问题..如果能解决..论坛币奉上,望大家见谅

使用道具

10
liangsai8888 发表于 2014-11-12 13:36:39 |只看作者 |坛友微信交流群
ywh19860616 发表于 2014-11-12 12:21
抱歉。你已经实现了,算给你提供另一种思路吧
我要的是a b c这三个数字作为3个变量,你还是没明白我的意思..我另一个问题也自己解决了..用merge可以解决..stata还是很强大的,不过还是谢谢你,论坛币送你把!

使用道具

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

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

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

GMT+8, 2024-5-15 01:32