楼主: qn
1222 8

[问答] R软件如何实现向前动态选择符合条件的数据,不使用循环 [推广有奖]

  • 4关注
  • 1粉丝

aa

讲师

37%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1588 点
帖子
219
精华
0
在线时间
573 小时
注册时间
2008-9-6
最后登录
2021-1-17

楼主
qn 发表于 2017-6-27 13:12:43 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如数据如下:
ID x1 x2      x3
1 a  星期一 20
2 b  星期二 30
3 c  星期三 50
4 b  星期二 70
5 a  星期一 80
6 c  星期三 40
7 b  星期二 NULL
8 a  星期一 NULL
9 c  星期三 NULL


从记录7开始向前找,找到与条件“x1、x2“一样的记录,有记录4和记录2,然后算出这两条x3的均值为(70+30)/2=50,然后把记录7的x3填为50。
由于数据量有好几百万,如果不用循环,有没有运行速度快的方法?求助大神。。。
二维码

扫码加我 拉你入群

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

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

关键词:如何实现 不使用 r软件 null 求助大神

回帖推荐

小朝 发表于5楼  查看完整内容

a就是你想要的表,你拿一部分数据测试一下。
沙发
qn 发表于 2017-6-28 08:50:14 |只看作者 |坛友微信交流群
跪求大神帮忙,可付报酬,私信给我。。。。。

使用道具

藤椅
jiangbeilu 学生认证  发表于 2017-6-28 10:58:21 |只看作者 |坛友微信交流群
此问题已经在经管爱问频道回答了哈。http://ask.pinggu.org/?q-41243.html

使用道具

板凳
qn 发表于 2017-6-28 11:24:45 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2017-6-28 10:58
此问题已经在经管爱问频道回答了哈。http://ask.pinggu.org/?q-41243.html
看到了,非常感谢,赞!如果与前面X1 X2 一致的数据有许多,还有1列是时间,只想取时间最靠近的几条改怎么做?

使用道具

报纸
小朝 发表于 2017-6-28 12:09:19 |只看作者 |坛友微信交流群
  1. library(dplyr)
  2. b <- read.table('at.txt',header = TRUE)  #你给的示例数据
  3. a <- b
  4. for(i in 7:9){
  5.     a[i,'x3'] <- a[1:i-1,] %>% filter(x1==a[i,'x1'] & x2==a[i,'x2']) %>% select(x3) %>% colMeans
  6. }


  7. a
复制代码


a就是你想要的表,你拿一部分数据测试一下。

  1. ID x1 x2 x3
  2. 1 a 星期一 20
  3. 2 b 星期二 30
  4. 3 c 星期三 50
  5. 4 b 星期二 70
  6. 5 a 星期一 80
  7. 6 c 星期三 40
  8. 7 b 星期二 NA
  9. 8 a 星期一 NA
  10. 9 c 星期三 NA
复制代码

使用道具

地板
jiangbeilu 学生认证  发表于 2017-6-28 12:29:56 |只看作者 |坛友微信交流群
qn 发表于 2017-6-28 11:24
看到了,非常感谢,赞!如果与前面X1 X2 一致的数据有许多,还有1列是时间,只想取时间最靠近的几条改怎么 ...
时间最近的,你可以自定义一个变量,比如在缺值值周围上下多少天的

使用道具

7
qn 发表于 2017-6-28 13:28:18 |只看作者 |坛友微信交流群
小朝 发表于 2017-6-28 12:09
a就是你想要的表,你拿一部分数据测试一下。
太赞了,非常感谢,方法好巧妙!我还有一个问题,想请教一下哈,比如我还有1列是时间,就是“a[1:i-1,] %>% filter(x1==a[i,'x1'] & x2==a[i,'x2'])“ 取出来的值,如果有许多条记录,我只想使用时间最靠近的几条,改怎样做呢?

使用道具

8
madup 发表于 2017-6-28 16:45:26 |只看作者 |坛友微信交流群
[quote]qn 发表于 2017-6-28 13:28 https://blog.exploratory.io/introducing-time-series-analysis-with-dplyr-60683587cf8a

使用道具

9
小朝 发表于 2017-6-29 09:53:56 |只看作者 |坛友微信交流群
qn 发表于 2017-6-28 13:28
太赞了,非常感谢,方法好巧妙!我还有一个问题,想请教一下哈,比如我还有1列是时间,就是“a[1:i-1,] % ...
把a[1:i-1,],修改成 a[i-n:i-1,], 如果n是2,则为最近时间的两条,首先保证你的数据是时间排序的。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-5-15 03:45