楼主: kamaduoluo
2928 3

[问答] 求助!!!关于R语言筛选数据的问题!! [推广有奖]

  • 2关注
  • 0粉丝

本科生

73%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1532 点
帖子
64
精华
0
在线时间
105 小时
注册时间
2015-2-15
最后登录
2025-4-20

楼主
kamaduoluo 发表于 2016-11-15 17:47:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
用户数据日期欠费金额

2345777

2016/5/6

-10

2345777

2016/10/6

-100

2345777

2016/11/14

-123

2345768

2016/1/5

-50

2345768

2016/1/6

-150

2345768

2016/1/7

-450

2345768

2016/1/8

-750

2345768

2016/1/9

-850



怎么通过R语言,筛选出用户,数据日期,欠费金额字段,条件是数据日期离当前日期最近的那条数据。

感谢~求助大神~
二维码

扫码加我 拉你入群

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

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

关键词:筛选数据 R语言 求助大神 筛选出 用户数 用户

回帖推荐

止水之涯 发表于2楼  查看完整内容

目前想到的用sqldf包中的SQL语句来实现,刚开始学R,对其他包不熟悉,肯定有更好的方法实现,先提供下自己的方法,大家交流下。 楼主要求“距离当前日期最近”,我理解为已有数据均小于或等于当前系统日期,不存在大于系统日期的情况。若不满足这个假设,代码需要改动。

止水之涯 发表于3楼  查看完整内容

另一种方法,利用aggregate和merge来实现,其实感觉原理和上面的SQL基本一样。 话不多说,代码见下:

沙发
止水之涯 发表于 2016-11-16 20:34:51
目前想到的用sqldf包中的SQL语句来实现,刚开始学R,对其他包不熟悉,肯定有更好的方法实现,先提供下自己的方法,大家交流下。
楼主要求“距离当前日期最近”,我理解为已有数据均小于或等于当前系统日期,不存在大于系统日期的情况。若不满足这个假设,代码需要改动。

  1. > data
  2.     UerID       Date Money
  3. 1 2345777   2016/5/6   -10
  4. 2 2345777  2016/10/6  -100
  5. 3 2345777 2016/11/14  -123
  6. 4 2345768   2016/1/5   -50
  7. 5 2345768   2016/1/6  -150
  8. 6 2345768   2016/1/7  -450
  9. 7 2345768   2016/1/8  -750
  10. 8 2345768   2016/1/9  -850
  11. > data$Date <- as.Date(data$Date,"%Y/%m/%d")
  12. > data
  13.     UerID       Date Money
  14. 1 2345777 2016-05-06   -10
  15. 2 2345777 2016-10-06  -100
  16. 3 2345777 2016-11-14  -123
  17. 4 2345768 2016-01-05   -50
  18. 5 2345768 2016-01-06  -150
  19. 6 2345768 2016-01-07  -450
  20. 7 2345768 2016-01-08  -750
  21. 8 2345768 2016-01-09  -850
  22. > library(sqldf)
  23. > newdata <- sqldf("select a.UerID,a.Date,a.Money from data a,(select UerID bUerID,max(Date) bDate from data group by UerID) where a.UerID = bUerID and a.Date = bDate")
  24. > newdata
  25.     UerID       Date Money
  26. 1 2345777 2016-11-14  -123
  27. 2 2345768 2016-01-09  -850
复制代码


藤椅
止水之涯 发表于 2016-11-16 20:47:27
另一种方法,利用aggregate和merge来实现,其实感觉原理和上面的SQL基本一样。
话不多说,代码见下:
  1. > data
  2.     UerID       Date Money
  3. 1 2345777 2016-05-06   -10
  4. 2 2345777 2016-10-06  -100
  5. 3 2345777 2016-11-14  -123
  6. 4 2345768 2016-01-05   -50
  7. 5 2345768 2016-01-06  -150
  8. 6 2345768 2016-01-07  -450
  9. 7 2345768 2016-01-08  -750
  10. 8 2345768 2016-01-09  -850
  11. > data2 <- aggregate(data = data,Date ~ UerID,max)
  12. > data2
  13.     UerID       Date
  14. 1 2345768 2016-01-09
  15. 2 2345777 2016-11-14
  16. > data3 <- merge(data2,data,by = c("UerID","Date"))
  17. > data3
  18.     UerID       Date Money
  19. 1 2345768 2016-01-09  -850
  20. 2 2345777 2016-11-14  -123
复制代码

板凳
kamaduoluo 发表于 2016-11-19 16:14:04
止水之涯 发表于 2016-11-16 20:47
另一种方法,利用aggregate和merge来实现,其实感觉原理和上面的SQL基本一样。
话不多说,代码见下:
非常感谢~~!!![victory][victory]

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

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