Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据时间戳获取每个ID的最新行_R_Date - Fatal编程技术网

R 如何根据时间戳获取每个ID的最新行

R 如何根据时间戳获取每个ID的最新行,r,date,R,Date,我需要每个组具有最新时间值的行。我有多个行和列。输入数据如下所示: view(DF) ID Value1 Value2 Value3 Value4 Time 1 1 7 13 19 2013-11-15 21:12:03:337 1 2 8 14 20 2013-12-23 15:12:01:227 2 3 9 15 21 2014-12-07 14:37:01:127 2 4 10 16 22 2013-12-12 05

我需要每个组具有最新时间值的行。我有多个行和列。输入数据如下所示:

view(DF)

ID  Value1  Value2  Value3  Value4  Time
1   1   7   13  19  2013-11-15 21:12:03:337
1   2   8   14  20  2013-12-23 15:12:01:227
2   3   9   15  21  2014-12-07 14:37:01:127
2   4   10  16  22  2013-12-12 05:23:01:239
3   5   11  17  23  2011-12-25 15:12:01:227
3   6   12  18  24  2011-12-25 15:12:02:227
我需要这样的结果:

ID  Value1  Value2  Value3  Value4  Time
1   2   8   14  20  2013-12-23 15:12:01:227
2   3   9   15  21  2014-12-07 14:37:01:127
3   6   12  18  24  2011-12-25 15:12:02:227
我已经查看了community.rstudio.com/t/replacement-all-null-values-in-a-dataset-code-issue/11285上提供的解决方案

我试过了

DF_filter = DF%>% 
  group_by(ID) %>%
  slice(which.max(Time))
此外,我还尝试通过以下方式转换时间戳中的时间列:

DF_time <- strptime(x=as.character(DF$Time), format = "%y-%m-%d %H%M:S")
但是DF_时间又回来了

第一个代码返回一个具有0 obs的数据DF_过滤器。和6个变量。 请提供帮助。

a data.table方法

DF_filter <- DF %>% 
  inner_join((DF %>% group_by(ID) %>% summarise(Time=max(Time))),
             by=c('ID'= 'ID', 'Time' = 'Time'))
样本数据

输出

数据表方法

样本数据

输出


正确格式化时间变量后:

使用base:

或者:

merge(aggregate(Time ~ ID, data = df, FUN = max), df)

正确格式化时间变量后:

使用base:

或者:

merge(aggregate(Time ~ ID, data = df, FUN = max), df)

您可以按日期排序,然后使用dplyr中的last。您可以按日期排序,然后使用dplyr中的last。这很有效,但我不知道为什么,但它缺少一行。例如,当使用@clemsang对原始问题的注释进行计算时,过滤后的数据应为2560行,但使用您的代码,我得到2559行。每个唯一ID应得到一行。因此,请检查lengthuniqueDF$ID。它返回什么?这是有效的,但我不知道为什么,但它缺少一行。例如,当使用@clemsang对原始问题的注释进行计算时,过滤后的数据应为2560行,但使用您的代码,我得到2559行。每个唯一ID应得到一行。因此,请检查lengthuniqueDF$ID。它返回什么?
#    ID Value1 Value2 Value3 Value4                Time
# 1:  1      2      8     14     20 2013-12-23 15:12:01
# 2:  2      3      9     15     21 2014-12-07 14:37:01
# 3:  3      6     12     18     24 2011-12-25 15:12:02
do.call(rbind, lapply(
  split(df, df$ID),
  function(x) x[which.max(x$Time), ]
))
merge(aggregate(Time ~ ID, data = df, FUN = max), df)