Вот подход, который должен быть обобщен для ваших данных.По крайней мере, это дает вам представление о синтаксисе логики.Я создал простой фрейм данных, который, мы надеемся, охватывает все ситуации здесь (например, только на английском языке; английский и другой язык; языки, отличные от английского; NA; и т.из ваших данных, которые вы удалили, у вас было N/A
значения, которые были строками (а не NA
).Прежде всего, нужно преобразовать их все в истинные NA
значения:
df[df=="N/A"] <- NA
df[df=="n/a"] <- NA
df[df=="NA"] <- NA
df[df=="na"] <- NA
Затем мы можем использовать mutate
с оператором ifelse
:
df %>% mutate(another_language = ifelse((df$col1 != "English" & !is.na(df$col1))
| (df$col2 != "English" & !is.na(df$col2))
| (df$col3 != "English" & !is.na(df$col3))
| (df$col4 != "English" & !is.na(df$col4)),
1,
0))
|
isпоэлементный логический оператор OR
, а &
- соответствующий оператор AND
.Если условие выполнено, df$another_language
заполняется 1
и 0
, если условие не выполняется.Логика должна быть читабельной.Вот вывод:
col1 col2 col3 col4 another_language
1 Mandarin Taiwanese Japanese Polish 1
2 <NA> <NA> <NA> <NA> 0
3 Mandarin Japanese <NA> <NA> 1
4 English Latin <NA> <NA> 1
5 Japanese <NA> <NA> <NA> 1
6 English <NA> <NA> <NA> 0