фильтрация строк в столбце данных или кадре данных на основе столбца, являющегося списком - PullRequest
0 голосов
/ 06 февраля 2019

Я бы хотел отфильтровать эту таблицу данных, но столбец, по которому я хочу отфильтровать, - это список.

#example data
time= c(1, 2, 3, 4)
conditions = list('rain', 'rain', c('rain', 'sleet'), 'rain')
data = data.table(date, conditions)
print(data)

   time conditions
1:    1       rain
2:    2       rain
3:    3 rain,sleet
4:    4       rain

Обычные команды, похоже, не работают:

# Data.Table
data[conditions == c('rain', 'sleet')] # Gives error
# dplyr
filter(data,conditions == c('rain', 'sleet')) # Doesn't return desired result

Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Мы можем использовать identical:

data[sapply(conditions, identical, c('rain', 'sleet')), ] 

или с tidyverse:

library(tidyverse)

data %>%
  filter(map_lgl(conditions, identical, c('rain', 'sleet')))

Выход:

   date conditions
1:    3 rain,sleet
0 голосов
/ 06 февраля 2019

Вы можете использовать пакет purrr и передать функцию identical.

library(dplyr)    
library(purrr)

data %>%
  filter(map_lgl(conditions, ~identical(c('rain','sleet'), .))) 

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