楼主: annizhou
4734 15

[问答] 用R实现按数字来抽取样本 [推广有奖]

  • 0关注
  • 0粉丝

本科生

60%

还不是VIP/贵宾

-

威望
0
论坛币
64 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
895 点
帖子
80
精华
0
在线时间
68 小时
注册时间
2010-10-26
最后登录
2020-1-29

楼主
annizhou 发表于 2013-5-30 03:25:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助各位大侠:

比如我现在有3组数据,每组数据里各包括10天的股票price信息。现在想通过R实现:给定一个三位数,比如865,就是可以自动抽取第一组的第8天数据,第二组的第6天数据,第三组的第5天数据。求助用R的什么命令能够实现以上的操作?非常感谢大家!!

二维码

扫码加我 拉你入群

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

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

关键词:R实现 Price Rice 非常感谢 各位大侠 数字 样本

沙发
qoiqpwqr 发表于 2013-5-30 04:12:36
假设你的三组数据是三个data frame分别叫做
data1
data2
data3
  1. num <- 865
  2. n1 <- as.numeric(substring(num, 1, 1))
  3. n2 <- as.numeric(substring(num, 2, 2))
  4. n3 <- as.numeric(substring(num, 3, 3))
  5. data1[n1, ]
  6. data2[n2, ]
  7. data3[n3, ]
复制代码

藤椅
annizhou 发表于 2013-5-30 07:26:39
qoiqpwqr 发表于 2013-5-30 04:12
假设你的三组数据是三个data frame分别叫做
data1
data2
谢谢版主的回答。我之前没有叙述清楚我的问题,现在请版主再帮我看看

我的数据data1,data2,data3里面分别有10天的高频交易数据,(比如说从1月10号到20号的数据),每一天的数据又有很多行。在data1中第8天的数据,也就是1月18号产生的数据行我都给了一个Index为18(TT),同理,如果是1月21号的数据行的Index都是21. data2和data3里的数据情况和data1类似。在这种情况下,比如我给定一个三位数 865,我想让R自动会选出data1的第8天数据(也就是1月18号的数据),data2的第6天的数据,data3的第5天数据。

我的问题比较复杂,也不知道这次我有没有叙述清楚


板凳
trier2006 发表于 2013-5-30 08:37:48
帮顶
最好的医生是自己,最好的药物是时间……

报纸
qoiqpwqr 发表于 2013-5-30 08:38:16
你所说的

"我想让R自动会选出data1的第8天数据(也就是1月18号的数据)",那会选出很多行是不是?

假设你的第一个数字是8就选18号的数据,你可以

data1[data1$Index == (n1 + 10), ]

地板
annizhou 发表于 2013-5-30 18:07:13
qoiqpwqr 发表于 2013-5-30 08:38
你所说的

"我想让R自动会选出data1的第8天数据(也就是1月18号的数据)",那会选出很多行是不是?
版主,运行R的时候出现问题了,我把我用的code贴出来

> X=read.table("EHFA1.txt",header=TRUE)
> Y=read.table("EHFA2.txt",header=TRUE)
> Z=read.table("EHFA3.txt",header=TRUE)
> num=865
> n1=as.numeric(substring(num,1,1))
> n2=as.numeric(substring(num,2,2))
> n3=as.numeric(substring(num,3,3))
> EHFA1=X[,1]
> EHFA2=Y[,1]
> EHFA3=Z[,1]
> EHFA1[X$Index==(n1+10),]
Fehler in EHFA1[X$Index == (n1 + 10), ] : falsche Anzahl von Dimensionen
> EHFA1[EHFA1$Index==(n1+10),]
Fehler in EHFA1$Index : $ operator is invalid for atomic vectors
>

7
qoiqpwqr 发表于 2013-5-30 21:11:56
annizhou 发表于 2013-5-30 18:07
版主,运行R的时候出现问题了,我把我用的code贴出来

> X=read.table("EHFA1.txt",header=TRUE)
把数据也贴出来

8
annizhou 发表于 2013-5-30 22:13:40
qoiqpwqr 发表于 2013-5-30 21:11
把数据也贴出来
版主,数据太多了,我就贴了前面几行。

Index             Time               Price                                       
9        9.005555556        136                                       
9        9.005555556        136.05                                       
9        9.005555556        136.05                                       
9        9.005555556        136.09                                       
9        9.007777778        136.09                                       
9        9.008055556        136                                       
9        9.008055556        135.9                                       
9        9.008333333        135.9                                       
9        9.008333333        136.09                                       
9        9.009166667        136.09                                       
9        9.009166667        136.09                                       
9        9.009444444        136                                       
9        9.009444444        136                                       
9        9.009722222        136                                       
9        9.01        136                                       
9        9.01        136                                       
9        9.010833333        135.99                                       
9        9.010833333        136                                       
9        9.011111111        136                                       
9        9.011111111        136                                       
9        9.011111111        136                              

补充说明一下,这里的index 9是1月9号,也是这个数据里的第一天。每个data里面都有10天的数据,但不一定都是从9号开始的。谢谢啦~

9
qoiqpwqr 发表于 2013-5-30 23:05:27
annizhou 发表于 2013-5-30 22:13
版主,数据太多了,我就贴了前面几行。

Index             Time               Price                 ...
我试了一下,没有错误

我把你的数据改了一下
这里如果你给的第一个数字是8,就先Index等于9的,这个你要根据你自己的情况变一下
  1. > data1
  2.    Index     Time  Price
  3. 1      9 9.005556 136.00
  4. 2      9 9.005556 136.05
  5. 3      9 9.005556 136.05
  6. 4      9 9.005556 136.09
  7. 5      9 9.007778 136.09
  8. 6     10 9.008056 136.00
  9. 7     10 9.008056 135.90
  10. 8     10 9.008333 135.90
  11. 9     10 9.008333 136.09
  12. 10    10 9.009167 136.09
  13. 11    10 9.009167 136.09
  14. 12    10 9.009444 136.00
  15. 13    10 9.009444 136.00
  16. 14    11 9.009722 136.00
  17. 15    11 9.010000 136.00
  18. 16    11 9.010000 136.00
  19. 17    11 9.010833 135.99
  20. 18    11 9.010833 136.00
  21. 19    11 9.011111 136.00
  22. 20    11 9.011111 136.00
  23. 21    11 9.011111 136.00

  24. > num <- 865
  25. > n1 <- as.numeric(substring(num, 1, 1))
  26. > data1[data1$Index == (n1 + 1), ]
  27.   Index     Time  Price
  28. 1     9 9.005556 136.00
  29. 2     9 9.005556 136.05
  30. 3     9 9.005556 136.05
  31. 4     9 9.005556 136.09
  32. 5     9 9.007778 136.09
复制代码

10
annizhou 发表于 2013-5-30 23:44:31
qoiqpwqr 发表于 2013-5-30 23:05
我试了一下,没有错误

我把你的数据改了一下
谢谢版主的回复,我得到了和版主相同的结果。

但我的data1文件里是有从1月9号到19号这10天的数据,给出第一个数字8,是希望R能抽取index为16的那一天,(即文件里第八天的数据,由于数据量比较大,所以我没有把全部10天的数据都贴上来),但是按照程序截取的是第一天的。这个问题怎么解决呢?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 23:32