2017-02-14 1 views
-3
lake      date   P   N   C 
East Long Lake  9/5/1994   21.9  254.8 
East Long Lake  9/5/1994   30.1  1190.0  257.0 
East Long Lake  9/5/1994   20.5  256.6 
East Long Lake  9/5/1994   22.1  249.0 
East Long Lake  9/5/1994   212.5  2011.6  1090.6 
Central Long Lake 6/30/1995   22.9  91.1 
Central Long Lake 6/30/1995  
Peter Lake   7/6/1994   41.9  527.2  29.6 
Peter Lake   7/6/1994   138.8  1994.0  1409.6 
Sparkling lake  7/13/1994   19.1  746.7  22.6 
Sparkling Lake  7/13/1994   19.2  21.3 

Я хотел, чтобы проанализировать данные несколькими способами (так же, как сводной таблицы в Excel)Pivot в R и черчения на основе данных подмножества

  1. Для каждой даты (день) У меня есть несколько значения. Мне нужно вычислить среднее значение для P, N, C по дате (только один день, потому что я все еще хочу ежедневные данные) отдельно для каждого озера.

  2. Следует обратить внимание на то, что мои недостающие значения не являются нулями. Таким образом, среднее значение не должно зависеть от этих недостающих значений. 3) Затем начертание его на озеро. Таким образом, множественные участки, где дата будет находиться на оси х и (P, N, С) по оси Y с

Я сделал этот анализ в Excel с помощью сводной таблицы и результат выглядит следующим образом. Но использование excel утомительно. Так что я ищу делать это в R.

lake      date   P   N   C 
East Long Lake  9/5/1994   61.42  792.4  673.8 
Central Long Lake 6/30/1995   22.9  91.1 
Peter Lake   7/6/1994   90.35  1260.6  719.6 
Sparkling Lake  7/13/1994   19.15  384   22.6 
+1

Это проще, чем я думал, что это будет. Используйте data.table, чтобы получить то, что вы ищете, а затем постройте аналогично последнему заданному вами вопросу. 'SetDT (DAT); dat = dat [. (P = среднее значение (P, na.rm = T), N = среднее (N, na.rm = T), C = среднее (C, na.rm = T)), by =. (озеро, дата)] 'Надеюсь, это поможет! – Kristofersen

+0

Ошибка в 'dat [. (P = средняя (P, na.rm = T), N = средняя (N, na.rm = T), C = средняя (C, na.rm = T)), на = . (озеро, дата)] 'by' или 'keyby' поставляется, но не j @Kristofersen я пробовал, но получаю ошибку – Wisconsin

+0

извините, забыли первую запятую. Попробуйте следующее: 'setDT (dat); dat = dat [,. (P = среднее значение (P, na.rm = T), N = среднее (N, na.rm = T), C = среднее (C, na.rm = T)), by =. (озеро, дата)] ' – Kristofersen

ответ

1

Использование dplyr и предполагая mydf ваши данные, мы можем сделать:

library(dplyr) 
mydf %>% 
    group_by(lake, date) %>% 
    summarise_all(mean, na.rm = T)