Извлечение минут из столбца (Experiment_time) DateTime в этом формате день месяц год и час минут и секунд (dmy_hms) - PullRequest
0 голосов
/ 16 октября 2019

У меня есть данные со столбцом (эксперимент_тайм) DateTime в этом формате день месяц год и час минута и секунда (dmy_hms). Я хочу извлечь только минуты из этой колонки, потому что это то, что мне нужно (продолжительность между), эксперименты проводились с интервалом в 5 минут в R-программировании. Я читаю даты и время в смазке, но я все еще не знаю, как решить проблему

rainfall_data <- read.csv("C:/Users/Esther/Document/experiment_data.csv", header = TRUE)

library(tidyverse)

transmute(experiment_data, experiment_time, hour=experiment_time %/% 100, minute=experiment_time %% 100)

            experiment_time hour minute
1   01-Aug-1970 13:05:00   NA     NA
2   01-Aug-1970 13:10:00   NA     NA
3   01-Aug-1970 13:15:00   NA     NA

Ответы [ 4 ]

0 голосов
/ 16 октября 2019

Вы можете использовать пакет data.table следующим образом:

library(data.table)
setDT(df)
df[, experiment_time := as.POSIXct(experiment_time, format = "%d-%b-%Y %H:%M:%S")]
df[, c("hour", "minute") := .(hour(experiment_time), minute(experiment_time))]

И затем преобразовать свои данные обратно в фрейм данных (если вы не используете data.table) следующим образом:

setDF(df)
0 голосов
/ 16 октября 2019

Я бы сначала загрузил данные как POSIXct, а затем извлекал минуты и часы. Учитывая тот факт, что ваши данные происходят из CSV, есть большая вероятность, что они в формате строки, а не POSIXct.

Код:

require(dplyr)

rainfall_data1 = rainfall_data %>% 
  dplyr::mutate(experiment_time = as.POSIXct(strptime(experiment_time,"%d-%b-%Y %H:%M:%S"))) %>% 
  dplyr::mutate(hour = format(experiment_time,"%H"),
                minute = format(experiment_time,"%M"))

Дайте мне знать, если это работает.

0 голосов
/ 16 октября 2019
library(tidyverse)
library(lubridate)
df%>%
    mutate(experiment_time = dmy_hms(experiment_time),
            hour = hour(experiment_time),
            minute = minute(experiment_time))
      experiment_time hour minute
1 1970-08-01 13:05:00   13      5
2 1970-08-01 13:10:00   13     10
3 1970-08-01 13:15:00   13     15
0 голосов
/ 16 октября 2019

Это, вероятно, будет работать:

rainfall_data <- read.csv("C:/Users/Esther/Document/experiment_data.csv", header = TRUE)
rainfall_data$hour = hour(rainfall_data$experiment_time)
rainfall_data$minute = minute(rainfall_data$experiment_time)

Если это не сработает, это, вероятно, означает, что experiment_time еще не в формате POSIXct, и в этом случае вы должны сначала преобразовать его, например,

rainfall_data <- read.csv("C:/Users/Esther/Document/experiment_data.csv", header = TRUE)
rainfall_data$experiment_time = as.POSIXct(rainfall_data$experiment_time)
rainfall_data$hour = hour(rainfall_data$experiment_time)
rainfall_data$minute = minute(rainfall_data$experiment_time)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...