У меня есть некоторые данные, похожие на набор данных iris
ниже.Я пытаюсь вложить данные, основанные на двух столбцах (group_by(Species, years)
).Я положил данные в таблицу под названием data
.Что выглядит так:
# A tibble: 15 x 3
Species years data
<fct> <int> <list>
1 setosa 1 <tibble [10 x 4]>
2 setosa 5 <tibble [10 x 4]>
3 setosa 3 <tibble [10 x 4]>
4 setosa 4 <tibble [10 x 4]>
5 setosa 2 <tibble [10 x 4]>
Я пытаюсь рассчитать квантили для каждого тибля.Итак, вычислите Species == virginica
и years == 1
и вычислите квантиль Sepal.Length
, однако я где-то ошибаюсь в части virginica_Q = map(data, ~select(.x, Sepal.Length, Sepal.Width))
, так как я выбираю data
(которая состоит из целых данных, а не отфильтрованных данных иливложенные данные).
Этот код дает мне желаемый результат:
iris %>%
filter(Species == "virginica") %>%
filter(years == 1) %>%
mutate(Q_vir_sep_len = ntile(Sepal.Length, 4))
Где у меня теперь есть квантили для Sepal.Length
:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species years Q_vir_sep_len
1 6.3 3.3 6.0 2.5 virginica 1 1
2 7.6 3.0 6.6 2.1 virginica 1 4
3 6.5 3.2 5.1 2.0 virginica 1 1
4 6.4 3.2 5.3 2.3 virginica 1 1
5 6.9 3.2 5.7 2.3 virginica 1 3
6 7.2 3.2 6.0 1.8 virginica 1 3
7 7.4 2.8 6.1 1.9 virginica 1 3
8 7.7 3.0 6.1 2.3 virginica 1 4
9 6.7 3.1 5.6 2.4 virginica 1 2
10 6.7 3.0 5.2 2.3 virginica 1 2
Я просто хочуповторить это для всех nested_tibbles
данных / кода
data(iris)
iris$years <- floor(runif(nrow(iris), min=0, max=5)) # edited the years column
iris
nested_iris <- iris %>%
group_by(Species, years) %>%
nest(.key = "data") %>%
mutate(
virginica_Q = map(data, ~select(.x, Sepal.Length, Sepal.Width)) %>%
map(., ~mutate(.x, Q_vir_sep_len = ntile(Sepal.Length, 4))),
Setosa_Q = map(data, ~select(.x, Sepal.Length, Sepal.Width)) %>%
map(., ~mutate(.x, Q_set_sep_len = ntile(Sepal.Length, 4)))
)
nested_iris
Я думаю, что решение для меня так же просто, как:
nested_iris <- iris %>%
group_by(Species, years) %>%
nest(.key = "data") %>%
mutate(
ALL_QUANTILES = map(data, ~select(.x, Sepal.Length, Sepal.Width)) %>%
map(., ~mutate(.x, myQuantiles = ntile(Sepal.Length, 4))),
)
иМне не нужно было создавать разные тиблы для каждого квантиля ...