Условные значения заполнения во фрейме данных R - PullRequest
0 голосов
/ 07 июня 2018

скажем, у нас есть простой фрейм данных

data.frame(val=c(0, NA, NA, 2, NA, NA))

как мне распространить только значение, если оно равно 0, чтобы получить желаемый фрейм данных:

data.frame(val=c(0, 0, 0, 2, NA, NA))

Я предпочитаю решение, совместимое с Tidyverse.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Другой вариант использования fill из tidyr, который является частью tidyverse.

library(tidyverse)

dat <- data.frame(val=c(0, NA, NA, 2, NA, NA))

dat2 <- dat %>%
  mutate(val2 = val) %>%
  fill(val2) %>%
  mutate(val = ifelse(val2 == 0, val2, val)) %>%
  select(-val2)
dat2
#   val
# 1   0
# 2   0
# 3   0
# 4   2
# 5  NA
# 6  NA
0 голосов
/ 07 июня 2018
library(zoo)
library(dplyr)

df = data.frame(val=c(0, NA, NA, 2, NA, NA))

df %>% mutate(val2 = ifelse(is.na(val) & na.locf(val) == 0, na.locf(val), val))

#   val val2
# 1   0    0
# 2  NA    0
# 3  NA    0
# 4   2    2
# 5  NA   NA
# 6  NA   NA

Затем вы можете удалить исходную переменную и создать новый набор данных, который имеет только обновленные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...