问题描述
我有一个泰坦尼克号数据集,我想根据3个条件找到存活的概率。下表给出了概率。
library(PASWR2)
tab = with(TITANIC3,ftable(fare = fare > 200,pclass,sex,survived)) %>% prop.table(1) %>% round(3) * 100
tab
是否有一种简单的方法可以将tab
表中的概率作为新列添加到TITANIC3数据集中?
谢谢!
解决方法
这可以通过使用软件包data.table
来实现。
对象TITANIC3
是类data.frame
的对象。首先,您需要将其转换为类data.table
。使用data.table时,可以直接在一行中基于聚合和分组子句定义新列。
只需运行下面的代码。
具有条件生存概率的新列为survival_prob
。
我总是建议使用data.table
,因为这是处理R中数据的最快方法。但是,如果要使用data.frame
进行分析,只需使用命令setDF(titanic3)
来转换。对象返回到类data.frame
。
library(PASWR2)
library(magrittr)
library(data.table)
# convert dataset from data frame to data table
titanic3 <- copy(TITANIC3)
setDT(titanic3)
# define new column survival_prob using by-option
titanic3[,survival_prob := round(100*mean(survived),1),by = .(fare > 200,pclass,sex)]