【问题标题】:R - Max, Min function using specific value from a different columnR - 使用来自不同列的特定值的 Max、Min 函数
【发布时间】:2017-11-28 17:56:55
【问题描述】:

在我自己的项目中工作时,我有一个较小的数据框,其中仅包含从较大的数据框中子集的 2 列。

我正在处理的两列是“Lap..”和“Timestamp..s.”。

我想从特定圈数中获取最小时间戳和最大时间戳。

现在我的重点是为特定圈数设置硬编码值。

这是我的代码:

time_df <- csv_to_Table[c("Lap..", "Timestamp..s." )]
#output data to csv to make sure that it is correct
write.csv(time_df, file = "data/lap_timestamp.csv")
output$time_test <- renderText({
  max(time_df$Timestamp..s.) - min(time_df$Timestamp..s.)
})

上面的代码会显示我在赛道上行驶的总时间。

但是,当我阅读 max 和 min 文档时,它并没有提到要过滤的额外条件。看到 dplyr 库确实包含过滤器,我试了一下,但还是没有成功。

output$time_test <- renderText({
  (max(time_df$Timestamp..s.) %>% filter(time_df$Lap.. == 1)) - (min(time_df$Timestamp..s.) %>% filter(time_df$Lap.. == 1))
})

测试数据位于:https://pastebin.com/GZvWEcXb

将来我会希望有一个圈数下拉菜单。

感谢任何帮助/提示。

【问题讨论】:

  • 请通过提供良好的示例代码:stackoverflow.com/questions/5963269/… 来帮助希望帮助您的人在该问题上的生活更轻松。如果你想使用 dplyr,你可以使用 group_by 并总结:time_df %&gt;% group_by(Lap) %&gt;% summarise(maxT=max(Timestamp..s..), minT=min(Timestamp..s.) %&gt;% mutate (diff=maxT-minT)

标签: r dplyr shiny shiny-server


【解决方案1】:

您也可以使用aggregate()。如果我对您的理解正确,您的数据如下所示:

# Make up some data
set.seed(1)
df = data.frame(Lap = sample(1:10, size = 20, replace = TRUE),
                Timestamp = sample(seq.POSIXt(from = ISOdate(2017,1,1), to = ISOdate(2017,06,1), by = "day"), size = 20, replace = TRUE))

然后使用aggregate() 获取每个圈数的最小值或最大值:

aggregate(Timestamp ~ Lap, data = df, FUN = min)
aggregate(Timestamp ~ Lap, data = df, FUN = max)

输出:

  > aggregate(Timestamp ~ Lap, data = df, FUN = min)
   Lap           Timestamp
1    1 2017-02-21 13:00:00
2    2 2017-04-02 14:00:00
3    3 2017-02-10 13:00:00
4    4 2017-01-29 13:00:00
5    5 2017-04-12 14:00:00
6    6 2017-04-10 14:00:00
7    7 2017-02-28 13:00:00
8    8 2017-03-04 13:00:00
9    9 2017-02-28 13:00:00
10  10 2017-01-03 13:00:00

 > aggregate(Timestamp ~ Lap, data = df, FUN = max)
   Lap           Timestamp
1    1 2017-02-21 13:00:00
2    2 2017-04-02 14:00:00
3    3 2017-05-23 14:00:00
4    4 2017-04-21 14:00:00
5    5 2017-04-12 14:00:00
6    6 2017-04-10 14:00:00
7    7 2017-05-13 14:00:00
8    8 2017-05-06 14:00:00
9    9 2017-02-28 13:00:00
10  10 2017-01-20 13:00:00

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2012-08-26
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多