как использовать rep для копирования значений в R - PullRequest
0 голосов
/ 08 октября 2019

В R говорят, что у меня есть df, упорядоченный по году, и у меня есть данные только за один год, как показано ниже.

year     data  num   code 
2011.1    b     31   DA
2011.2    a     35   2Q
2011.3    b     25   B3
2011.4    b     20   2F
2011.5    d     51   3H
2011.6    w     32   L2
2011.7    a     45   3B
2011.8    w     32   K1
2011.9    q     31   C3
2011.10   e     61   L9
2011.11   z     31   2K
2011.12   a     13   4K
2012.1    NA    NA   NA
2012.2    NA    NA   NA
...

2017.11
2017.12

Я бы хотел заполнить остальные строки в тех же значениях в 2011 годув таком случае какой код мне нужно написать?

Я уже пробовал использовать функцию rep (), но, думаю, в ней есть только такие параметры, как 1:12, например, rep (1:12, times = 7), чего я не хочу.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019
# Rows to be copied
M0 = df[1:12,]
# Start out empty
M = {}
# for loops are allowed :-)
for (i in 2011:2017) M = rbind(M, M0)
# Fix year column
M$year = df$year
# M holds the answer
0 голосов
/ 08 октября 2019

Упорядочить, используя месяцы, затем заполнить пропущенное с помощью tidyr::fill

library(dplyr)
df %>% 
   arrange(substr(year,6,7)) %>% 
   tidyr::fill(-year,.direction='down') %>% 
   arrange(year)

    year data num code
1 2011.1    b  31   DA
2 2011.2    a  35   2Q
3 2011.3    b  25   B3
4 2011.4    b  20   2F
5 2011.5    d  51   3H
6 2012.1    b  31   DA
7 2012.2    a  35   2Q
8 2017.1    b  31   DA
9 2017.2    a  35   2Q
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...