dplyr +通过'变异'添加复制的载体'

时间:2014-11-24 22:45:49

标签: r

我想在数据帧中添加一个变量向量,在给定的变量组中重复。必须有一种简单的方法在dplyr表示法中执行此操作(我宁愿不必执行match()语句)

数据:

library(dplyr); library(lubridate)

data <- data.frame(
    date = seq(as.Date('2014-11-01'), length = 30, by = '1 day'))   

data$day <- weekdays(as.Date(data$date))
data$week <- week(as.Date(data$date))

现在,对于每周突破,我想从预先指定的向量中添加一个数字(我试图将月份分成每周百分比总和为1):

weekly_vector <-  c(0.1, 0.2, 0.4, 0.2, 0.1)

我的想法是,我希望此向量的第一个元素--0.1--附加到第44周,第二个元素附加到第45周,依此类推。

但是像:

data <- data %>% group_by(week) %>% mutate(perc = weekly_vector)

不起作用:错误:无法复制大小为5的载体

我如何通过每周突破复制矢量元素?

1 个答案:

答案 0 :(得分:1)

您正尝试为weekly_vector的每个子集分配percdata列,这不是您想要做的。您想要的是每周为weekly_vector选择一个元素,并将此唯一值分配给perc中的data列。一种方法是通过left_join通过将数据与包含每周的数据框和相应的perc值相结合来实现。

data %>% left_join(data.frame(week = unique(data$week), perc = weekly_vector))

但你不一定需要dplyr。例如,你可以做到

data$perc <- weekly_vector[factor(data$week, labels ="")]