Расширение фрейма данных путем добавления 0 - PullRequest
4 голосов
/ 07 апреля 2020

У меня есть датафрейм, подобный следующему

#   Year A B
# 1 2000 1 1
# 2 2002 0 2
# 3 2005 0 1

Я хотел бы добавить промежуточные годы для генерации вывода, например:

#   Year A B
# 1 2000 1 1
# 2 2001 0 0
# 3 2002 0 2
# 4 2003 0 0
# 5 2004 0 0
# 6 2005 0 1

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Используйте complete и full_seq в tidyr.

library(tidyr)

complete(df, Year = full_seq(Year, 1), fill = list(A = 0, B = 0))

# A tibble: 6 x 3
   Year     A     B
  <dbl> <dbl> <dbl>
1  2000     1     1
2  2001     0     0
3  2002     0     2
4  2003     0     0
5  2004     0     0
6  2005     0     1
2 голосов
/ 07 апреля 2020

Мы можем использовать expand.grid и merge с base R

out <- merge(expand.grid(Year = min(df$Year):max(df$Year)), df, all.x = TRUE)
out[is.na(out)] <- 0

data

df <- data.frame(Year = c(2000, 2002, 2005), A = c(1, 0, 0), B = c(1, 2, 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...