Прежде чем предоставить какое-либо решение, важно знать, как отследить ошибку. В отчете об ошибке указывается, на каком этапе возникает проблема. Я взял общедоступный титанический набор данных, чтобы создать фрейм данных, который, как я полагаю, напоминает ваш фрейм данных
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
Для ответа на маркеры о выборе AMI я сказал бы, что он зависит от того, сколько программного обеспечения Вы устанавливаете.
Я был успешен с гибридным подходом, где я создаю AMI и загружаю мое тяжелое и более стабильное программное обеспечение. Это - материал, который должен запустить установщик или занимает большое количество времени для установки (помните, что, если Вы переустанавливаете пакет каждый раз как часть Вашего процесса запуска, Вы платите за установку каждый раз). Затем я загружаю маленькое и энергозависимое программное обеспечение при настройке/запуске времени. В этом блоке идет большая часть кода приложения, данных, и т.д. Тем путем я могу изменить свое приложение и не иметь для касания AMI.
Преимущества этого подхода:
Главные недостатки:
Я не использую Python, таким образом, я не могу прокомментировать ни одни из API, Вы сослались.