Сравните значения по 2 столбцам, используя DPLYR - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь сравнить каждую строку между 2 столбцами, используя dplyr и mutate.

Фрейм данных

df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
add = c("1234", "1234", "749s1", "73a19", "321", "321"))

Изменить, если идентификатор столбца = добавление столбца, вернуть1 else 0

df %>% mutate(TEST = ifelse(df$ID == df$add, 1, 0))

Однако приведенный выше код не работает.

Обновление: ошибка из-за уровней фактора

1 Ответ

1 голос
/ 06 марта 2019

Вы не поделились ошибкой, и я предполагаю, что это из-за factor уровней. Вот обновленное решение.



library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
                 add = c("1234", "1234", "749s1", "73a19", "321", "321"))



df %>% mutate(TEST = ifelse(as.character(ID) == as.character(add),1,0))
#>     ID   add TEST
#> 1 1234  1234    1
#> 2 1234  1234    1
#> 3 7491 749s1    0
#> 4 7319 73a19    0
#> 5  321   321    1
#> 6  321   321    1

Создано в 2019-03-06 пакетом Представить (v0.2.1)

Вы можете еще больше упростить это, используя as.numeric:

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

df <- data.frame(ID = c("1234", "1234", "7491", "7319", "321", "321"), 
                 add = c("1234", "1234", "749s1", "73a19", "321", "321"),
                 stringsAsFactors = FALSE)



df %>% mutate(TEST = as.numeric(ID == add))
#>     ID   add TEST
#> 1 1234  1234    1
#> 2 1234  1234    1
#> 3 7491 749s1    0
#> 4 7319 73a19    0
#> 5  321   321    1
#> 6  321   321    1

Создано в 2019-03-06 пакетом Представление (v0.2.1)

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