我正在研究产品的价格。我每天都有一些随机丢失的信息的数据。
请参见此处的最小示例,其中缺少1月4日的信息:
library(lubridate)
library(data.table)
mockData <- data.table(timeStamp=c(ymd("20180101"), ymd("20180102"), ymd("20180103"), ymd("20180105")),
price=c(10,15,12,11))
我想将滞后价格添加到我的data.table
中,但是如果缺少前一天,我希望使用NA
而不是最近的信息日。
我向自己解释:
如果我使用shift
函数:
mockData[, lag_price:=shift(price,type="lag")]
我得到:
structure(list(timeStamp = structure(c(17532, 17533, 17534, 17536
), class = "Date"), price = c(10, 15, 12, 11), lag_price = c(NA,
10, 15, 12)), row.names = c(NA, -4L), class = c("data.table",
"data.frame"))
但是我真正想要的是:
structure(list(timeStamp = structure(c(17532, 17533, 17534, 17536
), class = "Date"), price = c(10, 15, 12, 11), lag_price = c(NA,
10, 15, NA)), row.names = c(NA, -4L), class = c("data.table",
"data.frame"))
我对使用data.table
感到更自在,但如有需要,我将与data.frame
,dplyr
和tidyverse
合作
答案 0 :(得分:5)
您可以添加一个Array
(
[3] => Array
(
[s2] => Array
(
[0] => Array
(
[sem] => s2
[year] => 3
[subjectcode] => web
[subjectname] => webtechnology
[internal] => 30
[external] => 65
[credits] => 3
)
[1] => Array
(
[sem] => s2
[year] => 3
[subjectcode] => js654
[subjectname] => java
[internal] => 25
[external] => 60
[credits] => 3
)
)
)
)
语句以连续检查几天
ifelse
答案 1 :(得分:1)
mockData[, v :=
data.table(timeStamp = timeStamp + 1, price)[.SD, on=.(timeStamp), x.price]
]
timeStamp price v
1: 2018-01-01 10 NA
2: 2018-01-02 15 10
3: 2018-01-03 12 15
4: 2018-01-05 11 NA
这使用带有(timeStamp + 1, price)
的表进行更新联接。
答案 2 :(得分:0)
您可以展开日期,然后展开const styles = theme => ({
root: {
width: "100%",
marginTop: 0,
fontSize: 8
},
table: {},
row: {
border: "none",
"&:nth-of-type(odd)": {
backgroundColor: "red"
}
},
body: {
fontSize: 10,
border: "none"
}
});
价格。在此策略中,您还可以选择在管道中引入过滤器,以取出不需要的日期。
lag