我的工作是在数据框中查找低于特定阈值的连续值。首先,我从数据框中提取了值低于阈值的子集。现在我的数据如下所示:
Value dates
5105.47 1970-03-25
5398.53 1970-04-08
5520.65 1970-04-09
5052.68 1970-04-10
5406.77 1970-04-11
5501.05 1970-04-12
Run Code Online (Sandbox Code Playgroud)
结果基本上是一个不规则的时间序列。现在我想确定连续的日期。对如何做有任何猜测吗?
你可以试试
df1$consecutive <- c(NA,diff(as.Date(df1$dates))==1)
# > df1
# Value dates consecutive
# 1 5105.47 1970-03-25 NA
# 2 5398.53 1970-04-08 FALSE
# 3 5520.65 1970-04-09 TRUE
# 4 5052.68 1970-04-10 TRUE
# 5 5406.77 1970-04-11 TRUE
# 6 5501.05 1970-04-12 TRUE
Run Code Online (Sandbox Code Playgroud)
通过将字符串转换为Date格式,可以执行简单的操作,例如获取两个日期之间的差异。该函数diff()将向量作为输入,并计算v[i]向量的每个条目与其前一个条目之间的差异v[i-1]。差异向量显然比原始向量少了一项。由于无法判断data.frame中的第一个日期是否是连续的,因此可以合理地将其标识符设置为NA。
对于日期,如果差异等于1连续的天数,则比较结果diff(as.Date(df1$dates))==1)为TRUE。
数据
df1 <- structure(list(Value = c(5105.47, 5398.53, 5520.65, 5052.68,
5406.77, 5501.05), dates = structure(1:6, .Label = c("1970-03-25",
"1970-04-08", "1970-04-09", "1970-04-10", "1970-04-11", "1970-04-12"),
class = "factor")), .Names = c("Value", "dates"),
class = "data.frame", row.names = c(NA, -6L))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4859 次 |
| 最近记录: |