Присвоение значений некоторым конкретным переменным с помощью dplyr или purr - PullRequest
0 голосов
/ 18 марта 2019

Я хотел бы присвоить то же значение другой существующей переменной некоторым пропущенным данным, но способом dplyr или tidyverse.

Например, этот фрейм данных:

df <- data.frame(id = c(13, 14, 15, 16, 17), 
                 name = c("Bob", "Alice", "Joe", "Bob", "Alice"), 
                 year = c("2016", "2017", "2005", NA, NA))

> df
  id  name year
1 13   Bob 2016
2 14 Alice 2017
3 15   Joe 2005
4 16   Bob <NA>
5 17 Alice <NA>

Я бы хотел присвоить значение "2016" параметру "Bob" в строке 4. Я могу сделать это с помощью функции which:

df[which(df$name == "Bob"),]$year = "2016"

Но как это сделать с dplyr, purrr или любым другим пакетом из tidyverse?

1 Ответ

1 голос
/ 18 марта 2019

Вы можете использовать fill из пакета tidyr:

library(dplyr)
library(tidyr)

df %>%

  # within each name, fill missing years (default direction is downwards)
  group_by(name) %>%
  fill(year) %>%
  ungroup() %>%

  # sort rows by original order
  arrange(id)

# A tibble: 5 x 3
     id name  year 
  <dbl> <fct> <fct>
1    13 Bob   2016 
2    14 Alice 2017 
3    15 Joe   2005 
4    16 Bob   2016 
5    17 Alice 2017 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...