как добавить новый столбец с помощью логического оператора - PullRequest
0 голосов
/ 26 июня 2019

Я хочу создать новый столбец с именем «Другой язык», который дает мне значение 0/1. Логика, которую я хочу достичь, состоит в том, что 0, если Q1Q4_1, Q1Q4_2, Q1Q4_3, ИЛИ Q1Q4_4 = N / A; 1, если Q1Q4_1, Q1Q4_2, Q1Q4_3, ИЛИ Q1Q4_4 содержит символы, отличные от «английского», где Q1Q4_1, Q1Q4_2, Q1Q4_3, ИЛИ Q1Q4_4 - другие столбцы в наборе данных.

full_quiz = read.csv("Project Data/Full_Quiz_Dataset.csv")    
full_quiz$another_language = c(full_quiz$Q1Q4_1,full_quiz$Q1Q4_2, full_quiz$Q1Q4_3,full_quiz$Q1Q4_4) != NA

Я знаю, что это неправильно, но мне нужна помощь!

1 Ответ

0 голосов
/ 26 июня 2019

Вот подход, который должен быть обобщен для ваших данных.По крайней мере, это дает вам представление о синтаксисе логики.Я создал простой фрейм данных, который, мы надеемся, охватывает все ситуации здесь (например, только на английском языке; английский и другой язык; языки, отличные от английского; 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...