作者studioA (understand?)
看板R_Language
标题[问题] 如何将前n小时资料另存一个栏位
时间Thu Jul 21 11:17:08 2022
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
请把以下不需要的部份删除
新手(没写过程式,R 是我的第一次)
[问题叙述]:
我有一组data.table数据,格式如下, 我想新增1个栏位RH03,摆放RH值前3小时的数据,
我用dplyr 的 mutate 但出现错误讯息,请问要如何修正?
Data %>% mutate("RH03" =RH[-3])
Date hour RH
2022-07-01 1 71
2022-07-01 2 72
2022-07-01 3 77
2022-07-01 4 78
2022-07-01 5 83
2022-07-01 6 NA
2022-07-01 7 78
2022-07-01 8 70
2022-07-01 9 65
2022-07-01 10 60
2022-07-01 11 58
2022-07-01 12 55
2022-07-01 13 57
2022-07-01 14 58
2022-07-01 15 61
2022-07-01 16 79
2022-07-01 17 73
2022-07-01 18 66
2022-07-01 19 65
2022-07-01 20 72
2022-07-01 21 74
2022-07-01 22 74
2022-07-01 23 78
2022-07-01 24 81
[程式范例]:
[环境叙述]:
请提供 sessionInfo() 的输出结果,
里面含有所有你使用的作业系统、R 的版本和套件版本资讯,
让版友更容易找出错误
[关键字]:
选择性,也许未来有用
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.53.239.93 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1658373430.A.912.html
※ 编辑: studioA (27.53.239.93 台湾), 07/21/2022 11:24:00
※ 编辑: studioA (27.53.239.93 台湾), 07/21/2022 11:26:00
1F:推 lycantrope: 可以用lag(RH, n=3L)来取得位移後的资料,反之用lead 07/21 11:42
2F:推 wayturn: 若不能保证每小时都有RH、资料集有排序,建议是前两栏转 07/21 19:56
3F:→ wayturn: 成时间格式>>判断3小时是否资料>>新栏位赋予 07/21 19:56
4F:推 Gjerry: Data[, tmp := hour - 3] 07/22 01:10
5F:→ Gjerry: merge(Data[, -"tmp"], Data[, -"hour"], by.x = "hour", 07/22 01:13
6F:→ Gjerry: by.y = "tmp", all = T) 07/22 01:13
7F:→ Gjerry: 然後再清理一下表格移除不需要的NA就好了 07/22 01:14
8F:推 fox1375: 用ifelse就可以了,不过如果不是前3小时要摆多少,0吗? 07/22 02:30
9F:→ fox1375: Data %>% mutate(RH03 = ifelse(hour <= 3, RH, 0)) 07/22 02:31
10F:→ fox1375: NA就Data %>% mutate(RH03 = ifelse(hour <= 3, RH, NA)) 07/22 02:32
11F:推 hohiyan: data.table的话 df[, RH03 := shift(RH, 3L, 0, "lag")] 07/22 03:00
12F:→ hohiyan: 如果前3个小时不填0而是NA,就把0改成NA即可 07/22 03:00
14F:→ studioA: 感谢解答疑惑 07/22 11:56