разные функции агрегирования для разных столбцов - PullRequest
0 голосов
/ 14 июня 2019

У меня есть датафрейм со следующими столбцами: Я БЫ Фактор 1 -> 5 (5 столбцов; 1 на фактор) Недели года (52 колонки, 1 в неделю)

Недели года содержат элементы томов, 0, 1, 2 или в некоторых случаях до 64.

Столбцы факторов - это время взаимодействия человека с предметом.

Вот как выглядят данные:

mydata

Как видно из прикрепленного файла, идентификатор может иметь несколько строк.

Я хочу сделать следующее в r ... Я хотел бы суммировать ячейки томов для всех уникальных значений ID и получить максимум для каждого фактора по каждому уникальному значению ID.

У меня нет кода для показа, так как я не слишком хорошо знаю, как это сделать в r.

Каков мой ожидаемый результат: Если я считаю, что ID заканчивается 250557, есть два случая. Я ожидаю, что Facotr 1 = 4; Фактор 2 = 1, Факторы 3,4 и 5 = 0. Затем, глядя горизонтально на неделю, я ожидал бы следующее ... 1,1,1,2,1,3,1,1,1,1,1 , 2,1,2,2,1,2,1,2,1

любая помощь будет оценена. Заранее большое спасибо.

1 Ответ

0 голосов
/ 14 июня 2019

Рассмотрите возможность преобразования коэффициентов в числовые для нужд агрегации.Затем выполните отдельные агрегации по диапазонам столбцов и статистике (т. Е. max и sum) и объедините выходные данные.

df[sapply(df, is.factor)] <- as.numeric(df[sapply(df, is.factor)])

factor_max_df <- aggregate(cbind(Factor1, Factor2, Factor3, Factor4, Factor5) ~ ID1, df, 
                           max)

volume_sum_df <- aggregate(. ~ ID1, subset(df, select=[-c(Factor1, Factor2, Factor3,
                                                          Factor4, Factor5)], 
                           sum)

final_df <- merge(factor_max_df, volume_sum_df, by="ID1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...