Редактирование фрейма данных с определенными условиями - PullRequest
0 голосов
/ 13 октября 2018

У меня есть фрейм данных, и я хотел бы удалить некоторые конкретные случаи в зависимости от простого правила: если x равно 2, y должно быть NA.

Вот пример:

x <- c(1, 2, 1, 2, 1, 2, 1, 2)
y <- c(5, 5, NA, NA, 6, 6, 4, 4)

df <- data.frame(x, y)
df

  x  y
1 1  5
2 2  5
3 1 NA
4 2 NA
5 1  6
6 2  6
7 1  4
8 2  4

И результат должен выглядеть следующим образом:

  x  y
1 1  5
2 2 NA
3 1 NA
4 2 NA
5 1  6
6 2 NA
7 1  4
8 2 NA

Есть ли способ решить это с помощью ifelse?Я благодарен за любую помощь.

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете сделать

df$y[df$x == 2] <- NA
df

#  x  y
#1 1  5
#2 2 NA
#3 1 NA
#4 2 NA
#5 1  6
#6 2 NA
#7 1  4
#8 2 NA

Или с replace

df$y <- replace(df$y, df$x == 2, NA)

Используя ту же логику в dplyr mutate

library(dplyr)
df %>%
  mutate(y = replace(y, x==2, NA))

Или ifelse версия

df$y <- ifelse(df$x == 2, NA, df$y)

df %>%
   mutate(y = ifelse(x == 2, NA, y))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...