Подсчитать эстетику по-разному для даты R и POSIXct - PullRequest
0 голосов
/ 16 ноября 2018

Я заметил что-то очень странное при работе с Date и POSIXct объектами. Смотрите следующий код:

library(tidyverse)
library(Rmisc)

test <- structure(list(
  date = structure(c(
    16863, 16866, 16862, 16743,
    16741, 16819, 16820, 16969, 16896, 16636, 16855, 16715, 16842,
    16899, 16859, 16860, 16827, 16823, 16912, 16878, 16848, 16839,
    16901, 16833, 16896, 16841, 16735, 16800, 16781, 16903
  ), class = "Date"),
  group = structure(c(
    1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L,
    2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L,
    2L, 1L, 2L, 2L, 2L
  ), .Label = c("0", "1"), class = "factor")
), row.names = c(
  NA,
  -30L
), class = c("tbl_df", "tbl", "data.frame"))

test$posix <- as.POSIXct(test$date)

p1 <- ggplot(
  test, 
  aes(x = date, group = group, colour = group, fill = group)
) + 
  stat_density(aes(y = ..count..), alpha = 0.4)

p2 <- ggplot(
  test, 
  aes(x = posix, group = group, colour = group, fill = group)
) + 
  stat_density(aes(y = ..count..), alpha = 0.4)

multiplot(p1, p2)

Это приводит к следующему графику: см. Ось Y. (Количество <1, потому что размер выборки очень мал.) </p>

enter image description here

Почему шкалы отличаются на этих двух графиках, когда вызывается geom_density с ..count..? То же самое, когда вызывается ..density... Единственная разница между этими двумя сюжетами - это призыв к x эстетике либо с Date, либо с POSIXct. Я довольно озадачен.

1 Ответ

0 голосов
/ 17 ноября 2018

Ах, это был довольно глупый вопрос.Глупый я.

> as.numeric(test$posix)
 [1] 1456963200 1457222400 1456876800 1446595200 1446422400
 [6] 1453161600 1453248000 1466121600 1459814400 1437350400
[11] 1456272000 1444176000 1455148800 1460073600 1456617600
[16] 1456704000 1453852800 1453507200 1461196800 1458259200
[21] 1455667200 1454889600 1460246400 1454371200 1459814400
[26] 1455062400 1445904000 1451520000 1449878400 1460419200

в то время как

> as.numeric(test$date)
 [1] 16863 16866 16862 16743 16741 16819 16820 16969 16896 16636
[11] 16855 16715 16842 16899 16859 16860 16827 16823 16912 16878
[21] 16848 16839 16901 16833 16896 16841 16735 16800 16781 16903

Так что, как сказал @hrbrmstr, это просто вопрос единицы.

Я оставлю этот пост в качестве предупреждения, чтобы показать, что преобразование в класс POSIXct может иметь неожиданные последствия.Я (без необходимости) пытался использовать scale_x_datetime в то время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...