我正在尝试使用数据帧“泰坦尼克号”计算存活率。
我已经过滤了一个名为“ Male_adult_passengers”的对象,其向量“类”包括三个等级。
还有另一列记录了生存情况(“是”或“否”)
我想获得不同类别的存活率并进行比较。
我应用了dplyr软件包,并尝试将代码编码为:
Male_adult_passenger %>%
group_by(Class) %>%
summarise(S_rates = count(Survived = 'Yes')/count(Survived))
但只发现了一条错误消息:
Error in group_vars(x) : argument "x" is missing, with no default
此消息是什么意思?我该如何获得所需的生存率?
非常感谢您。
答案 0 :(得分:0)
首先,下一次请提供可复制的示例。您可以轻松地做到这一点,例如使用dput(Male_adult_passenger)
。
无论如何,该错误是由于使用赋值Survived = 'Yes'
而不是比较Survived == 'Yes'
而引起的。
尝试解决该问题,但我猜测count
会很麻烦。如果不起作用,请尝试:
Male_adult_passenger %>%
group_by(Class) %>%
summarise(S_rates = sum(Survived == 'Yes')/n())
如果仍然无法解决问题,请通过编辑您的问题来提供示例,我很乐意进一步研究。
答案 1 :(得分:0)
在提供任何解决方案之前,重要的是要知道如何追溯错误。错误报告提供了发生问题的步骤。 我选择了可公开获得的泰坦尼克号数据集,以创建与您的数据帧相似的数据帧
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)
在执行代码块时,问题出在count(Survived ='Yes')。如mgiormenti所述,逻辑比较语法不正确。一旦纠正了逻辑比较,您将得到一个错误,提示计数不是对象类“生存”的适用方法。计数不适用于dplyr。最佳选择是sum,length和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