【发布时间】:2018-01-20 04:42:18
【问题描述】:
我正在尝试将 add_row() 添加到分组数据中没有使用 do。
library(dplyr)
library(tidyr)
library(purrr)
library(tibble)
my.data <- data.frame(
supplier = c("a","a","a","a","a","a","b","b","b","b","b","b"),
date = rep(c("2017-06-01","2017-03-01","2017-02-01","2017-01-12",
"2017-05-01","2017-04-01"), 2),
order = c(1,0,0,1,1,0,0,1,0,0,1,0)
)
解决方案
my.data %>%
group_by(supplier) %>%
do(add_row(.,.before=0))
给了
# A tibble: 14 x 3
# Groups: supplier [3]
supplier date order
<chr> <chr> <dbl>
1 <NA> <NA> NA
2 a 2017-06-01 1
3 a 2017-03-01 0
4 a 2017-02-01 0
5 a 2017-01-12 1
6 a 2017-05-01 1
7 a 2017-04-01 0
8 <NA> <NA> NA
9 b 2017-06-01 0
10 b 2017-03-01 1
11 b 2017-02-01 0
12 b 2017-01-12 0
13 b 2017-05-01 1
14 b 2017-04-01 0
尝试使用嵌套和变异或 purrr::map
my.data %>%
group_by(supplier) %>%
nest() %>%
mutate(extra.row = add_row(data, .before = 0))
mutate_impl(.data, dots) 中的错误: 评估错误:不支持的索引类型:NULL。
任何建议。缩放时做非常慢。
【问题讨论】:
-
您希望整行都为 NA,甚至是分组变量?
-
目的是添加日期值是每组最小日期前 30 天的日期值。 add_row(data, date = (min(.$date) - 30), .before=0)
-
好吧,我猜应该加入。我不使用tidyverse,所以无法回答。您可能应该澄清问题中的“解决方案”不是解决方案(因为供应商和日期是 NA)..?