dplyr mutate()可以从现有的小标题创建新的小标题吗?

时间:2018-11-04 12:42:08

标签: r dplyr

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

0 个答案:

没有答案