У меня есть dataframe --say x - который передает функцию, которая возвращает подмножество в зависимости от значения столбца x $ id.Группировка и суммирование, когда возвращаемые столбцы заранее не известны
Это подмножество y включает в себя столбец y $ room, который содержит различное сочетание значений в зависимости от значения x $ id.
Подмножество затем распространяется с помощью tidyr, а значения y $ room становятся столбцами.
Затем полученный расширенный df --say ext_y-- должен быть сгруппирован по столбцу y_ext $. Посещаемость и итоговая статистика должны вычисляться для остальных столбцов специальной функцией.
Очевидная проблема заключается в том, что эти столбцы заранее не известны и поэтому не могут быть определены их именами внутри функции.
Альтернатива использованию индексов столбцов вместо имен, похоже, не работает с dplyr, когда участвует group_by.
У вас есть идеи, как можно решить эту проблему?
dataframe имеет много тысяч строк, поэтому я дам вам только проблеск:
> tail(y)
id visit room value
11940 14 2 living room 19
11941 14 2 living room 16
11942 14 2 living room 15
11943 14 2 living room 22
11944 14 2 living room 25
11945 14 2 living room 20
> unique(x$id)
[1] 14 20 41 44 46 54 64 74 104 106
> unique(x$visit)
[1] 0 1 2
> unique(x$room)
[1] "bedroom" "living room" "family room" "study room" "den"
[6] "tv room" "office" "hall" "kitchen" "dining room"
> summary(x$value)
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.000 2.750 7.875 17.410 16.000 1775.000
Для данного идентификатора распространения() из tidyr возвращает только подмножество значений номеров в х. Например. для ID = 54:
> y<- out
> y$row <- 1 : nrow(y)
> y_ext <- spread(y, room, value)
> head(y_ext)
id visit row bedroom family room living room
1 14 0 1 6.00 NA NA
2 14 0 2 6.00 NA NA
3 14 0 3 2.75 NA NA
4 14 0 4 2.75 NA NA
5 14 0 5 2.75 NA NA
6 14 0 6 2.75 NA NA
Теперь, я должен составить функцию, что группы результат на посещение и суммирует столбцы, которые возвращаются для каждой группы в следующем виде:
visit bedroom family room living room
1 0 NA 2.79 3.25
2 1 NA NA 4.53
3 2 4.19 3.77 NA
Как я уже говорил выше, я не знаю заранее, какие столбцы будут возвращены для данного идентификатора, и это усложняет проблему. Конечно, короткое сокращение было бы , чтобы проверить и узнать для каждого идентификатора, какие столбцы возвращены, а затем создать , если структура, которая направляет каждый идентификатор на соответствующий код, но это не очень изящно, я боюсь.
Надеюсь, это помогло вам улучшить картину.
Добро пожаловать на переполнение стека! Пожалуйста, прочитайте информацию о [как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и как дать [воспроизводимый пример] (http://stackoverflow.com/questions/ 5963269). Это облегчит вам помощь другим людям. – zx8754
вместо того, чтобы сообщать нам о проблеме, принято давать примерный набор данных ... который помогает решать проблемы. В отсутствие этого ... всегда одинаковое количество столбцов выбрано? существуют ли какие-либо шаблоны в именах, которые могут использоваться, например, для выбора по функциям? Существуют ли общие сценарии? Измените проблему со всем вышеперечисленным, и мы увидим, что мы можем сделать. –
Благодарим вас за отзыв. Я добавил код и данные. Надеюсь, это поможет вам лучше понять проблему. Пожалуйста, дайте мне знать, если я смогу улучшить вопрос дальше. Более того, если возможно, улучшите классификацию вопроса, чтобы я не столкнулся с проблемой при постановке новых вопросов в будущем. – pv7