В конечном итоге я хочу создать таблицу, содержащую каждый уникальный идентификатор, который есть в моем наборе данных, с соответствующим полем на основе «ранжирования» этого поля.
Я очень застрял на этом шаге. Я рассмотрел цикл для каждого уникального идентификатора, но хотел посмотреть, есть ли более простой способ. Возможно, вам может помочь семейство функций apply. Я также не уверен в способе ранжирования различных строковых значений (например, ИСТИНА> ЛОЖЬ> НД).
Ниже приведен небольшой пример того, что я ищу, только с двумя интересующими нас областями:
df1 <- data.frame(ID = c(1,1,2,2,3,3,3,4,4,5,6,7,7), flag = c("NA", "TRUE", "NA", "FALSE", "TRUE", "TRUE", "FALSE", "NA", "NA", "NA", "TRUE", "FALSE", "FALSE"))
Для каждого идентификатора:
- Если в поле флага есть хотя бы одна «ИСТИНА», я хочу вытащить одну из этих целых строк (не имеет значения, какую из них).
- Если идентификатор не содержит значения «ИСТИНА» в поле флага, но имеет «ЛОЖЬ» хотя бы в одной строке, я хочу извлечь одну из этих целых строк.
- Если идентификатор не имеет значения «ИСТИНА» или «ЛОЖЬ» в поле флага, мне все равно нужна одна из строк «Н / Д».
Ниже приведен отдельный фрейм данных, который я в идеале хотел бы иметь:
ideal.df <- data.frame(ID = c(1,2,3,4,5,6,7), flag = c("TRUE", "FALSE", "TRUE", "NA", "NA", "TRUE", "FALSE"))
Заранее благодарю за любую помощь!