Как создать график, используя почасовые данные для каждого дня - PullRequest
0 голосов
/ 20 января 2020

Я новичок в R, и у меня есть файл CSV с 2 переменными. Имя столбца <> имеет объединенное значение даты и времени для каждого дня в течение 12 месяцев, а переменная имеет столбец <>, соответствующий дате. Это пример данных: введите описание изображения здесь

Я хочу сделать простой график, чтобы увидеть качество воздуха каждого месяца и соответствующего дня. Примерно так: Ожидаемая фотография

Мне не нужно производить какие-либо расчеты, поскольку данные уже почасовые. Но я изо всех сил пытаюсь сделать сюжет.

Вот так я загружаю данные.

Data = read.csv ("EarthSense.csv") ** Затем я попытался разделить время и часы, но это не сработало конвертирует все НС.

**Hours <- format(as.POSIXct(strptime(Data$date,"%d/%m/%Y %H:%M",tz="")) 
,format = "%H:%M")
 glimpse(Hours)
 Dates <- format(as.POSIXct(strptime(Data$date,"%d/%m/%Y %H:%M",tz="")) 
 ,format = "%d/%d/%Y")
 glimpse(Dates)
 **

chr [1: 8750] Н а н а н а н а н н а н а н а н а п а н н а н а н а н п п е н ли п е н а п ь ли я ...

**ggplot(data=Data,aes(x=date, y=value)) + 
  geom_path(colour="red") + 
  ylab("Temperatura (ºC)") + 
  xlab("Fecha")

**

1 Ответ

1 голос
/ 20 января 2020

Редактировать : Используются данные вашего примера. Формат даты выглядит следующим образом: %Y-%m-%d %H:%M:%S.

df$fdate <- as.POSIXct(df$date, format = "%Y-%m-%d %H:%M:%S")
df$hour <- as.numeric(format(df$fdate, "%H"))
df$mo_yr <- as.factor(format(df$fdate, "%b-%Y"))

ggplot(data=df, aes(x=hour, y=PM2P5, col=mo_yr)) + 
  geom_line() + 
  ylab("Temperatura (ºC)") + 
  xlab("Hora")

edited plot of temp vs hour

Обратите внимание, что это создает коэффициент месяц-год. Другие способы работы с объектами месяца-года включают yearmonth в пакете tsibble и yearmon в пакете zoo.

Данные

df <- structure(list(date = c("2019-01-01 02:00:00", "2019-01-01 03:00:00", "2019-01-01 04:00:00", "2019-01-01 05:00:00", "2019-01-01 06:00:00", "2019-01-01 07:00:00"), 
               PM2P5 = c(20.8, 7.1, 6.1, 9.7, 6.8, 12.2 )), row.names = c(NA, 6L), class = "data.frame")
...