过滤时间戳R中的最后n个观察值
我是R方面的新手,我有一个简单的问题 我有一个数据帧,其中有一列关于时间戳和各种其他特性。时间戳列是31天,我必须得到时间戳的最后n天(比如16天) 假设31天,它会给我过去16天(10月16日至10月31日)的观察结果。我知道如何在Python中做到这一点,但我不知道如何在R中做到这一点 样本df:过滤时间戳R中的最后n个观察值,r,datetime,dplyr,R,Datetime,Dplyr,我是R方面的新手,我有一个简单的问题 我有一个数据帧,其中有一列关于时间戳和各种其他特性。时间戳列是31天,我必须得到时间戳的最后n天(比如16天) 假设31天,它会给我过去16天(10月16日至10月31日)的观察结果。我知道如何在Python中做到这一点,但我不知道如何在R中做到这一点 样本df: f1 f2 f3 timestamp 1 2 3 2020-10-02 14:36:03 2 3 5 2020-10-03 14:26:03 1 2 3 2020-10-05 1
f1 f2 f3 timestamp
1 2 3 2020-10-02 14:36:03
2 3 5 2020-10-03 14:26:03
1 2 3 2020-10-05 14:36:03
2 3 5 2020-10-05 14:26:03
1 2 3 2020-10-07 14:36:03
2 3 5 2020-10-10 14:26:03
1 2 3 2020-10-12 14:36:03
2 3 5 2020-10-13 14:26:03
1 2 3 2020-10-15 14:36:03
2 3 5 2020-10-16 14:26:03
1 2 3 2020-10-22 14:36:03
2 3 5 2020-10-25 14:26:03
1 2 3 2020-10-26 14:36:03
2 3 5 2020-10-31 14:26:03
结果应该是什么样的:
f1 f2 f3 timestamp
2 3 5 2020-10-16 14:26:03
1 2 3 2020-10-22 14:36:03
2 3 5 2020-10-25 14:26:03
1 2 3 2020-10-26 14:36:03
2 3 5 2020-10-31 14:26:03
时间戳中的时间对于每次观察都是不同的,上面的框架仅用于说明目的。
任何帮助都将不胜感激
更新以消除混淆:
我不能像在原始数据帧中那样使用tail()函数,每天有多个值。抱歉没有说清楚。如果您需要先订购数据帧,然后使用order,那么您可以简单地使用
unique
和tail
来获取日期,然后简单地过滤数据帧。我假设timestamp是指R中的POSIXct
类,然后再试一次
数据可能您需要子集中的润滑
library(lubridate)
subset(
df,
day(timestamp) >= days_in_month(timestamp) - 15
)
或者以dplyr
的方式
df %>%
filter(between(day(timestamp), days_in_month(timestamp) - 15, days_in_month(timestamp)))
给
f1 f2 f3 timestamp
10 2 3 5 2020-10-16 14:26:03
11 1 2 3 2020-10-22 14:36:03
12 2 3 5 2020-10-25 14:26:03
13 1 2 3 2020-10-26 14:36:03
14 2 3 5 2020-10-31 14:26:03
数据
> dput(df)
structure(list(f1 = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L,
1L, 2L, 1L, 2L), f2 = c(2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L,
2L, 3L, 2L, 3L), f3 = c(3L, 5L, 3L, 5L, 3L, 5L, 3L, 5L, 3L, 5L,
3L, 5L, 3L, 5L), timestamp = structure(c(1601642163, 1601727963,
1601901363, 1601900763, 1602074163, 1602332763, 1602506163, 1602591963,
1602765363, 1602851163, 1603370163, 1603632363, 1603719363, 1604150763
), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA,
-14L), class = "data.frame")
尝试对data.frame使用dput()并发布结果。然后您可以直接使用示例数据进行尝试。tail
函数tail(df,n)
将返回数据帧的最后一行。例如,last8@SteveM我不能使用tail函数,因为每天有多个值。有没有其他选择。嗨@Thomas,我不能使用tail函数,因为每天有多个值。有其他选择吗?很好用。我不知道这种方法。我会读更多的。@Syedahed我简化了我的答案,这样你就可以查出来了