2016-04-29 3 views
1

У меня есть большой dataframe (3million + строки, 14 COLS), показывающие ежедневные часовые температуры в течение года для 346 уникальных широт и долготкак суммировать строки на основе уникального идентификатора

JULDAY, D0cm, D2.5cm, .... 
1  .84 .76 
1  .83 .78 
2  .20 .23 
2  .19 .19 
... 
365  .026 .076 
365  .025 .053 

JULDAY 365 дней разделить на 24 часа (например, 1 час в строке, 24 строки в день) и соответствующее значение температуры в соответствии с глубиной

Я думаю, что здесь должно быть простое решение, но, похоже, оно не может понять.

в основном я хочу суммировать значения 24 в день в D0cm и D2.5 и т.д. для всех 365 уникальных значений в JULDAY это должно дать мне 365 значений, то есть сумма каждого дня 24 ч ценит

ли это случай создания цикла for? Я уверен, что кто-то может мне точку в правильном направлении

Извините, если я не объяснить себя хорошо, но я очень устал ...

ответ

2

Мы можем использовать dplyr

library(dplyr) 
df1 %>% 
    group_by(JULDAY) %>% 
    summarise_each(funs(sum = sum(., na.rm=TRUE))) 

Или с data.table

library(data.table) 
setDT(df1)[, lapply(.SD, sum, na.rm=TRUE), by = JULDAY] 
+0

Потрясающие спасибо, я был нно g 'library (dplyr) soiltemps%>% group_by (JULDAY)%>% summaryise_each (SumD0cm = sum (D0cm), SumD2.5cm = sum (D2.5cm)), но второй data.table работает намного лучше , Новым был простой ответ – Vaughn

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