# A tibble: 4 x 4
x n lag_x y
<dbl> <dbl> <dbl> <dbl>
1 20 100 0 20
2 30 100 20 10
3 58 100 30 28
4 100 NA 58 42
Могу ли я создать новый тиббл из существующего тиббл? Все в одной длинной трубе %>%
? Я хочу взять этот кадр данных выше и повторять каждый номер строки y
раза. Но мой код для создания тиббла, из тиббла не работает. Все строки ниже работают, кроме трех последних, которые я закомментировал. Какая из этих трех последних является лучшей идеей и как правильно ее написать?
library(tidyverse)
mytibble <- tibble(mytibble = rnorm(100))
x <- c(0, 20, 30, 58)
n <- 100
newcolumn <- data_frame(x, n) %>%
distinct() %>%
filter(x >= 0 & x < n) %>%
arrange(x) %>%
bind_rows(data_frame(x = n)) %>%
mutate(lag_x = lag(x)) %>%
mutate(y = x - lag_x) %>%
filter(!is.na(y)) %>%
# transmute(grp = rep(row_number(), y))
# {transmute(grp = rep(row_number(), y))}
# tibble(grp = transmute(grp = rep(row_number(), y)))
Конечным выводом должен быть столбец, который я могу преобразовать (или объединить) в совершенно отдельный фрагмент, в данном случае mytibble
. Я нашел способ сделать это путем 'list
ing' и 'un list
ing' данных, но это не может быть лучшим способом?
# it would be something like this
summarise(n = list(rep(row_number(), y))) %>%
unnest(n) %>%
rename(grp = n)