楼主: siguo007
2952 4

[问答] 求助:rdata数据抽取 [推广有奖]

  • 0关注
  • 0粉丝

初中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
1 点
经验
99 点
帖子
5
精华
0
在线时间
22 小时
注册时间
2016-7-31
最后登录
2018-1-29

楼主
siguo007 发表于 2016-8-7 18:46:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大佬们好。初学R,有个数据提取问题,描述如下:
图示为rdata里读取到的2012-2013年沪A数据


我的目标是,提取(每个股票+每个月)的头一个交易日和最后一个交易日所对应的数据,

也就是红框里的这些行。

我知道得从第二列的date入手,

但是每个股票以及每个月的头一个交易日和最后一个交易日,

可能互不相同,没有固定日期

想麻烦高手们支个招,非常感谢

QQ截图20160807182903.jpg


二维码

扫码加我 拉你入群

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

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

关键词:RData Data rda 最后一个 date 交易日

沙发
bbslover 在职认证  发表于 2016-8-7 20:47:57
直观想法,先把2012-01-29,分开year:2012, month:01, day:29,比如处理后的数据为D,
  1. library(data.table)
  2. D <- data.table(a = c(3,4,5,6,7,8),
  3.                 year = c("2012","2012", "2012", "2012", "2012", "2012"),
  4.                 month = c("01","01", "01", "02", "02","02"),
  5.                 day = c("02", "29", "18", "01", "29", "10"))


  6. D
  7. L1 <- D[, day == min(day), by = list(year, month)][, V1]
  8. L2 <- D[, day == max(day), by = list(year, month)][, V1]
  9. L <- L1 | L2
  10. D[L, ]
复制代码


看看能不能得到启发。
已有 1 人评分经验 论坛币 收起 理由
李会超 + 60 + 10 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 10   查看全部评分

藤椅
johnmy 发表于 2016-8-8 04:52:58
可以用dplyr和tidy两个包试试。比较笨的一个思路。
把第二拆用separate()分成:年-月(col2)和日(col3)两列,然后用group_by对第一列(股票名称)和第二列(col2)进行分组,再通过summarize和which.max,which.min对日(col3)做汇总,找出最大日期和最小日期所在的行。知道了行号提取数据就比较容易了。
已有 1 人评分论坛币 收起 理由
李会超 + 5 热心帮助其他会员

总评分: 论坛币 + 5   查看全部评分

板凳
siguo007 发表于 2016-8-8 15:28:08
谢谢楼上亲们。

后来自己弄了个笨办法,新加一列,是把year和month拼成一个整数

month
201201
201202
...
201301
...
201312

再按照month统计。。。
已有 1 人评分学术水平 信用等级 收起 理由
alecwf + 1 + 1 精彩帖子

总评分: 学术水平 + 1  信用等级 + 1   查看全部评分

报纸
alecwf 发表于 2018-11-5 23:02:11
这样也不错。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 10:34