Прежде чем предоставить какое-либо решение, важно знать, как отследить ошибку.В отчете об ошибке указывается, на каком этапе возникает проблема.Я взял общедоступный титанический набор данных, чтобы создать фрейм данных, который, как я полагаю, напоминает ваш фрейм данных
library(dplyr)
titanic<-read.csv('titanic.csv')
Male_adult_passenger<-subset(titanic,Sex=='male')
Male_adult_passenger$Survived<-ifelse(Male_adult_passenger$Survived==0,"No","Yes")
Male_adult_passenger$Survived<-factor(Male_adult_passenger$Survived)
Во время выполнения вашего кодового блока проблема заключалась в подсчете (Survived = 'Yes').Синтаксис логического сравнения не был правильным, как упомянуто mgiormenti.Как только вы исправите логическое сравнение, вы получите ошибку, которая не подходит для вашего класса объектов 'Survived'.Граф не работает с dplyr.Лучшими альтернативами являются сумма, длина и n () n () подсчитывает количество наблюдений в вашем классе сгруппированных объектов.
Male_adult_passenger %>%
group_by(Pclass,Survived) %>%
summarize(n())
Pclass Survived n()
<int> <chr> <int>
1 No 77
1 Yes 45
2 No 91
2 Yes 17
3 No 296
3 Yes 47
Альтернативой n () для символьных столбцов является функция длины.Вероятно, вам нужна длина столбца Survived, где Survived == 'Yes', Survived [Survived == 'Yes']
Male_adult_passenger %>%
group_by(Pclass) %>%
summarize(S_rates=length(Survived[Survived=="Yes"])/n())
Pclass S_rates
<int> <dbl>
1 0.3688525
2 0.1574074
3 0.1370262