Разница между двумя выражениями фильтра - PullRequest
0 голосов
/ 19 сентября 2019

Я создаю функцию, которая использует filter (), и я заметил странное поведение, и поэтому я хотел бы, чтобы кто-то более опытный мог объяснить мне причину этого поведения.Это длинный вопрос, но его можно обобщить следующим образом: В чем разница между:

df <- filter (df, State == NameState) и df <- filter (df, State% in% NameState) </p>

Спасибо за вашу помощь !!!

Это мой код

    best <- function(NameState , outcomeName ) { #two inputs: name of the state and outcome
          df <- read.csv('outcome-of-care-measures.csv')   #Read the csv file
               df <- select(df, c(State, outcomeName ))    # Select from df the columns State 
                                                           # and from outcomeName
               df <- filter(df , State == NameState)      # I want it to filter for NameState
        }

В последней строке все стало странно.Когда я вызываю функцию с

head(best('AL' , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' )) 

, мой вывод таков: (что нормально)

head (лучше всего ('AL', 'Hospital.30.Day.Death)..Mortality..Rates.from.Heart.Attack '))

  State Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack
1    AL                                                      14.3
2    AL                                                      18.5
3    AL                                                      18.1
4    AL                                             Not Available
5    AL                                             Not Available
6    AL                                             Not Available

Но если я попытаюсь отфильтровать 2 состояния с помощью:

head(best(c('AL', 'AZ') , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' ))

По какой-то причинекаждая вторая строка пропускается (как вы можете видеть из выходных данных)

head(best(c('AL', 'AZ') , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' ))
  State Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack
1    AL                                                      14.3
2    AL                                                      18.1
3    AL                                             Not Available
4    AL                                                      17.7
5    AL                                                      15.9
6    AL                                                      19.6

И по какой-то причине, если я заменю последнюю строку кода в моей функции на эту, то каждая работает отлично

 df <- filter(df , State %in% NameState )
...