2017-09-13 13 views
0

私は週番号に基づいて月を割り当てたいと思います。私が試した:繰り返し増分リストの部分的な回数

full = data.frame(group = c('a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c'), week = c(1, 2, 3, 4, 5, 1, 2, 3, 1, 2)) 
full %>% group_by(group) %>% mutate(month = rep(1, 4, each = length(group)/4)) 

出力であるために: カラムmonth

group week month 
1  a 1  1 
2  a 2  1 
3  a 3  1 
4  a 4  1 
5  a 5  2 
6  b 1  1 
7  b 2  1 
8  b 3  1 
9  c 1  1 
10  c 2  1 

しかしながら、上記のコードはmutate_implにおけるエラー

エラー(.DATA、ドット)を返します長さ5(グループサイズ)または1でなく4である必要があります。

時間の部分的な長さ:rep(1:2, each = 1.5)をの代わりに1, 1, 2と繰り返すことはありますか?

答えて

1

あなたは日付と週を扱い、lubridate

library(lubridate) 
library(dplyr) 
full %>% 
    group_by(group) %>% 
    mutate(month = lubridate::month(origin + lubridate::weeks(x=week))) 

が出力

# A tibble: 10 x 3 
# Groups: group [3] 
    group week month 
    <fctr> <dbl> <dbl> 
1  a  1  1 
2  a  2  1 
3  a  3  1 
4  a  4  1 
5  a  5  2 
6  b  1  1 
7  b  2  1 
8  b  3  1 
9  c  1  1 
10  c  2  1 
0

たぶんあなたの代わりにfloorを使用することができます使用することができます。

full %>% group_by(group) %>% mutate(month = floor((1:length(group) + 3)/4)) 
関連する問題