Сгруппировать и рассчитать три строки в R - PullRequest
0 голосов
/ 08 октября 2019

Есть ли возможность для R сгруппировать и рассчитать 3 строки одновременно? Или «просто» определить, что первые 3 строки должны быть объединены, а затем следующие 3, а затем снова следующие? Например (как на картинке ниже) вы хотите объединить первые 3 строки в одну строку. SDO_ID и отметка времени (сравнимые с временем) с использованием медианы, а Therm с использованием среднего значения

Слева я выполнил функцию str (), чтобы вы могли приблизительно увидеть, какое количество и форматы данных она имеет

Table and data from R

Ответы [ 3 ]

7 голосов
/ 08 октября 2019

Да, вы можете использовать split, aggregate, by и, возможно, больше.

enter image description here

0 голосов
/ 24 октября 2019

Мне удалось решить проблему с помощью следующего кода:

joinxx$Gruppe <- rep(1:(nrow(joinxx)/3), each=3)
    joinxx %>%
    group_by(Gruppe) %>%
    summarise(SDO_ID = median(SDO_ID), Time = median(Zeitstempel), Wert = mean(Wert)) -> sumjoinxx

Я написал это здесь один раз, потому что здесь я могу лучше подчеркнуть кодировку.

0 голосов
/ 08 октября 2019

Вы можете добавить увеличивающееся число group к вашим данным с помощью rep(), а затем использовать library(data.table), чтобы вычислить среднее значение и медиану для ваших данных и сгруппировать их по столбцу group.

library(data.table)
set.seed(1)
DT <- data.table(temp = rnorm(30), sdo_id = rlnorm(30), z = runif(30) )

DT$group <- rep(1:(nrow(DT)/3), each=3)

DT[, .(mean_temp = mean(temp), median_id = median(sdo_id)), by=group]

РЕДАКТИРОВАТЬ

Если вы не хотите добавлять столбец, вы можете использовать его следующим образом:

DT[, .(mean_temp = mean(temp), median_id = median(sdo_id)), by=rep(1:(nrow(DT)/3), each=3)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...