Агрегирование данных с использованием R - PullRequest
3 голосов
/ 26 сентября 2011

Я пытаюсь построить данные с использованием R, читая мой CSV-файл, который содержит некоторые значения, которые регистрировались ежеквартально.Я бы хотел, чтобы R агрегировал данные за каждую минуту, чтобы я мог построить поминутные данные, используя plot(TIME,VALUE.).Мой CSV-файл содержит что-то вроде этого:

Store No.,Date,Time,Watt
33,2011/09/26,09:11:01,0.0599E+03
34,2011/09/26,09:11:02,0.0597E+03
35,2011/09/26,09:11:03,0.0598E+03
36,2011/09/26,09:11:04,0.0596E+03
37,2011/09/26,09:11:05,0.0593E+03
38,2011/09/26,09:11:06,0.0595E+03
39,2011/09/26,09:11:07,0.0595E+03
40,2011/09/26,09:11:08,0.0595E+03
41,2011/09/26,09:11:09,0.0591E+03

У меня проблемы с агрегацией столбца «Время и Ватт» по минутам, так как я новичок в «R.».1005 *

1 Ответ

5 голосов
/ 26 сентября 2011

Предполагая, что № магазина не имеет значения и изменив последние три строки в данных примера, показанных в вопросе, на 09:12:.. вместо 09:11:.., поэтому у нас есть как минимум две разные минуты:

# create test data

Lines <- "Store No.,Date,Time,Watt
33,2011/09/26,09:11:01,0.0599E+03
34,2011/09/26,09:11:02,0.0597E+03
35,2011/09/26,09:11:03,0.0598E+03
36,2011/09/26,09:11:04,0.0596E+03
37,2011/09/26,09:11:05,0.0593E+03
38,2011/09/26,09:11:06,0.0595E+03
39,2011/09/26,09:12:07,0.0595E+03
40,2011/09/26,09:12:08,0.0595E+03
41,2011/09/26,09:12:09,0.0591E+03"
cat(Lines, "\n", file = "data.txt")

# read in aggregating at the same time

library(zoo)
library(chron)
z <- read.zoo("data.txt", header = TRUE, sep = ",", index = 2:3,
    FUN = paste, FUN2 = function(x) trunc(as.chron(x), "00:01:00"), 
    aggregate = mean)[, -1]

Здесь FUN применяется к столбцам, указанным index. Он вставляет их вместе, а затем FUN2 применяется к результату FUN, создающему chron дату / время. Наконец, строки с одинаковыми значениями FUN2 затем агрегируются, принимая среднее значение Watt, давая:

> z
(09/26/11 09:11:00) (09/26/11 09:12:00) 
           59.63333            59.36667 

В зависимости от того, что требуется, аргумент aggregate можно изменить на aggregate = function(x) tail(x, 1) вместо показанного аргумента aggregate.

Для получения дополнительной информации и примеров загрузите пакет zoo и посмотрите ?read.zoo, ?aggregate.zoo и vignette("zoo-read"), а также другие виньетки и файлы справки.

ОБНОВЛЕНИЕ: Небольшое упрощение с помощью аргумента FUN2. Не уверен, но этот read.zoo аргумент возможно, не существовало на момент первого ответа на этот вопрос.

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