2015-08-06 3 views
0

Как я могу изменить этот код, чтобы иметь сводный вид на временной шкале?Агрегация временной шкалы Google

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

Кроме того, любая идея, как правильно показать это время? Разница между каждыми двумя временами меньше секунды, но то, что показано в измеренном году.

library("googleViz") 
dd <- read.csv(header = TRUE, text = "rosbagTimestamp,data 
1438293919014802388,avocado 
1438293919078955343,avocado 
1438293919082352685,avocado 
1438293919146142553,0 
1438293919177955753,0 
1438293919244013175,strawberry 
1438293919251252990,strawberry 
1438293919322521358,blueberry 
1438293919327731275,blueberry") 

dd <- within(dd, { 
    end <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 1, 10)), 
        origin = '1970-01-01') 
    start <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 11, 19)), 
         origin = '1970-01-01') 
    rosbagTimestamp <- NULL 
}) 

#   data    start     end 
# 1 avocado 1970-06-21 03:47:12 2015-07-30 18:05:19 
# 2 avocado 1972-07-02 16:01:04 2015-07-30 18:05:19 
# 3 avocado 1972-08-10 23:44:00 2015-07-30 18:05:19 
# 4   0 1974-08-19 07:07:44 2015-07-30 18:05:19 
# 5   0 1975-08-22 12:10:40 2015-07-30 18:05:19 
# 6 strawberry 1977-09-25 01:24:16 2015-07-30 18:05:19 
# 7 strawberry 1977-12-17 19:29:52 2015-07-30 18:05:19 
# 8 blueberry 1980-03-21 16:15:44 2015-07-30 18:05:19 
# 9 blueberry 1980-05-21 00:26:40 2015-07-30 18:05:19 

plot(gvisTimeline(dd, rowlabel = 'data', barlabel = 'data', 
        start = 'start', end = 'end')) 

enter image description here

ответ

2

Вам просто нужно разделить на соответствующую величину и выбрать свой любимый инструмент агрегирования, чтобы добавить раз группой (если я правильно понимаю)

library('googleVis') 
dd <- read.csv(header = TRUE, text = "rosbagTimestamp,data 
       1438293919014802388,avocado 
       1438293919078955343,avocado 
       1438293919082352685,avocado 
       1438293919146142553,0 
       1438293919177955753,0 
       1438293919244013175,strawberry 
       1438293919251252990,strawberry 
       1438293919322521358,blueberry 
       1438293919327731275,blueberry") 

dd <- within(dd, { 
    end <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 1, 10))/1e8, 
        origin = '1970-01-01') 
    start <- as.POSIXct(as.numeric(substr(rosbagTimestamp, 11, 19))/1e8, 
         origin = '1970-01-01') 
    rosbagTimestamp <- NULL 
}) 

## sum the times by group 
dd1 <- aggregate(. ~ data, data = dd, sum) 
dd1 <- within(dd1, { 
    start <- as.POSIXct(start, origin = '1970-01-01') 
    end <- as.POSIXct(end, origin = '1970-01-01') 
}) 

#   data    start     end 
# 1   0 1969-12-31 19:00:03 1969-12-31 19:00:28 
# 2 avocado 1969-12-31 19:00:01 1969-12-31 19:00:43 
# 3 blueberry 1969-12-31 19:00:06 1969-12-31 19:00:28 
# 4 strawberry 1969-12-31 19:00:04 1969-12-31 19:00:28 

plot(gvisTimeline(dd1, rowlabel = 'data', barlabel = 'data', 
        start = 'start', end = 'end')) 

enter image description here

+0

, поэтому я использую ваш код, за исключением чтения из CSV, и я получаю эту ошибку: 'Неверные данные в строке # 7: start (Sat Jul 29 67882 20:56:51 GMT-0500 (C DT))> end (Wed Dec 31 1969 18:33:04 GMT-0600 (CST)). × 'поэтому я использую эту строку в коде для чтения CSV:' dd <- read.csv ("_ slash_gaze.csv", header = TRUE, sep = ",") 'и это csv http://pastebin.com/st8FwrQg Почему код ломается? –

+0

плюс где обычно публикуют свои .csv-файлы в Интернете, если не pastebin, чтобы задавать вопросы в stackoverflow? Благодаря! @rawr –

+0

На самом деле это странно. теперь, когда я снова запускаю тот же код, я получаю ошибку в строке №5! 'Неверные данные в строке # 5: начало (сб. 27 июля 256430 14:35:45 GMT-0500 (CDT))> конец (ср. 31 декабря 1969 года 18:06:44 GMT-0600 (КНТ)). × ' –

 Смежные вопросы

  • Нет связанных вопросов^_^