Какую функцию R я могу использовать, чтобы проверить, идентичны ли значения столбца на основе атрибута?

#r #tidyverse

Вопрос:

Если ваше решение может содержать решение, основанное на пакете tidyverse, это было бы здорово.

В принципе, я пытаюсь сгруппироваться по столбцу под названием «Атрибут» и проверить, являются ли все значения в столбце «Значения» идентифицирующими.

Это мой ожидаемый результат:

введите описание изображения здесь

Как вы можете видеть — для Mustang столбец значений равен 1. Поэтому мы устанавливаем соответствие = «Да».

Для Corvette и зарядного устройства, поскольку одно из значений выключено, мы устанавливаем соответствие = «Нет».

Я пытался:

данные lt;- group_by(Атрибут) %gt;% изменяются(Совпадения = ifelse(первое(значение) != любое(значение), «Да», «Нет»)

Не сработало. Любая помощь будет очень признательна!

Комментарии:

1. В any(Value) иис не все ясно. потому any(1) что возвращает TRUE, тогда any(0) как возвращает FALSE, т. е. любое значение, не равное 0, возвращает TRUE

Ответ №1:

На самом any(Value) деле это не то, что мы хотели, так как any возвращает значение TRUE/FALSE в зависимости от того, имеет ли оно какое-либо значение больше 0 или нет. Кроме того, есть некоторые опечатки ( data lt;- group_by(Attribute) — так и должно быть data %gt;% group_by(Attribute) )

 gt; any(c(1, 0, 5)) [1] TRUE gt; any(c(0, 0, 0)) [1] FALSE  

Возможно, нам потребуется проверить, равно ли число различных элементов ( n_distinct ) 1 или нет

 library(dplyr) data lt;- data %gt;%  group_by(Attribute) %gt;%  mutate(Matches = c("No", "Yes")[1   (n_distinct(Value) == 1)])  # // or using ifelse  # mutate(Matches = ifelse(n_distinct(Value) == 1, "Yes", "No"))