Как сравнить два фактора в одном столбце в кадре данных на основе значений в другом столбце и удалить их, если они не совпадают - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь сравнить два фактора на основе значений (в данном случае, даты) в другом столбце. Если они не совпадают, я хотел бы удалить строку.

пример:

>head(data)
 light date
1 0    20190314
2 0    20190317
3 1    20190314
4 0    20190318
5 1    20190316
6 1    20190318
7 1    20190314

Итак, я хотел бы, чтобы результат был:

>head(data)

 light date
1 0    20190314
2 1    20190314
3 0    20190318
4 1    20190318
5 1    20190314

Спасибо заранее

Ответы [ 3 ]

0 голосов
/ 21 апреля 2020

Вы можете отфильтровать ваш фрейм данных, проверив, существует ли значение определенного столбца в каком-либо другом фрейме данных:

data <- data %>%
  filter(date %in% unique(other_df$reference_column))
0 голосов
/ 21 апреля 2020

Опция с subset

subset(data, date %in% unique(other_df$reference_column))
0 голосов
/ 21 апреля 2020

Вот одно из решений.

Вход

tribble(~light, ~date,
"0","20190314",
"0","20190317",
"1","20190314",
"0","20190318",
"1","20190316",
"1","20190318",
"1","20190314"
) ->d

Код

library(dplyr)
d %>% group_by(date) %>% # group by date
  mutate(is_keep = if_else("0" %in% light & "1" %in% light, 1,0)) %>% # create a temporary column to keep track if date has both 0 and 1. 
  filter(is_keep==1) %>% # filter out rows to keep
  select(-is_keep) %>% # remove temp column
  ungroup() #ungroup df

Выход

  light date    
  <chr> <chr>   
1 0     20190314
2 1     20190314
3 0     20190318
4 1     20190318
5 1     20190314
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...