# 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)