为什么在使用 mutate 和 mean 时时间列不是从 0 分钟开始?

问题描述 投票:0回答:0

我按以下方式有一个文本文件(每分钟数据)。

Date/Time   Col1   Col2   Col3....
2021-01-01T00:00:00  20  12  34...
2021-01-01T00:01:00  .....
2021-01-01T00:02:00  .....
2021-01-01T00:03:00  .....
2021-01-01T01:04:00  .....
2021-01-01T01:05:00  .....
2021-01-01T01:05:00  .....
2021-01-01T01:07:00  .....
2021-01-01T02:08:00  .....

我使用稍后提到的 R 中的代码计算了我的数据(.txt 文件)每 15 行的平均值。我想要下面指定的特定方式的日期和时间列。

Date   Time   Col1   Col2   Col3....
2021-01-01   00:00:00  12  36  56
2021-01-01   00:15:00  34  54  43
2021-01-01   00:30:00  24  23  21
2021-01-01   00:45:00  12  36  56
2021-01-01   01:00:00  34  54  43
2021-01-01   01:15:00  24  23  21
2021-01-01   01:30:00  12  36  43
2021-01-01   01:45:00  12  36  34
2021-01-01   02:00:00  12  36  34 
.
.

为此,我在 R 中运行了以下代码:

library(lubridate)

mn <- df %>% separate(`Date/Time`, into = c("Date", "Time"), sep = "T")

mnf <- mn %>% 
 as_tibble() %>%
 group_by(group = as.integer(gl(n(), 15, n()))) %>%
 mutate(
    # Convert Date column into the Date datatype
    Date = lubridate::ymd(Date), 
    # Convert Time column into the Period datatype (HMS). Then, 
    # change this to number of seconds
    Time = period_to_seconds(hms(Time))
 ) %>%
 summarise(across(everything(), mean)) %>%
 summarise(across(everything(), ~ if(mean(is.na(.x)) > 0.8) NA else mean(.x, na.rm = TRUE))) 
 # Convert Time column from number of seconds 
 # back into the Period datatype (HMS). Omit this line
 # if you'd prefer to have the average in seconds
 mutate(Time = seconds_to_period(Time))

mnf

write.csv(min, 'C:/Users/Alexia/Desktop/Test/15row.csv')

我的问题是运行代码,时间列显示从 7 分钟、22 分钟、37 分钟开始的分钟...它们有 15 分钟的间隔,但我不明白为什么它从 7 分钟而不是 0 分钟开始?谁能帮忙。

r if-statement mean lubridate mutate
© www.soinside.com 2019 - 2024. All rights reserved.