2015-04-16 3 views
0

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

data temp 
11.01.15 11am 15 
11.01.15 12am 16 
11.01.15 13am 14 
12.01.15 11am 13 
12.01.15 12am 11 
12.01.15 13am 11 

и продолжается в течение 5192 строк и много дней, я должен вычислить среднее значение одного и тот же день, измерения всегда выполняются 3 раза в день. Поэтому мне нужен цикл, который будет вычислять среднее значение для строк 1-3, 4-6, 7-9 и т. Д., И отслеживать их и сохранять в файле.

ответ

0

Используйте пакет dplyr и его функции. Я собираюсь предположить, что у вас есть переменная, называемая «день» или «дата», и другая переменная «x», которую вы хотите ежедневно использовать. Код:

group_by(data, day) %>% 
    summarize(meanX = mean(x)) 

возвращает dataframe со средним значением й на каждый день в наборе данных под названием data.

+1

Это не сработает, потому что каждое измерение дня уникально. –

+0

Если метка времени является частью переменной дня, она столкнется с проблемами. Но 'substr (day, 1, 8)' позаботится об этом. – iacobus

1

Если у вас всегда есть 3 наблюдения, вы можете просто вычислить среднее temp по модулю 3. Если предположить, что ваши данные называются df

tapply(df$temp, cumsum(seq(nrow(df)) %% 3 == 1L), mean) 
#  1  2 
# 15.00000 11.66667 

Другой способ заключается в преобразовании data в Date класс высчитывает среднее значение по Это. Вот пример использования data.table

library(data.table) 
setDT(df)[, mean(temp), by = as.Date(data, "%d.%m.%y")] 
#  as.Date  V1 
# 1: 2015-01-11 15.00000 
# 2: 2015-01-12 11.66667 
0

Вы можете использовать lapply сделать это

req.out = do.call(rbind, 
      lapply(split(data, f = data$date), 
      function(x){ 
      out = mean(x$measurement) 
      })) 

Где данные Вашего кадра данных, содержащей дата и столбец (я назвал ее измерение выше), для которого требуется для вычисления среднего значения.

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