在 R 中向 data.table 添加条件概率
Adding conditional probabilities to data.table in R
我有泰坦尼克号数据集,我想在其中找到基于 3 个条件的生存概率。下面table给出概率。
library(PASWR2)
tab = with(TITANIC3, ftable(fare = fare > 200, pclass, sex, survived)) %>% prop.table(1) %>% round(3) * 100
tab
有没有一种简单的方法可以将 tab
table 中的概率作为新列添加到 TITANIC3 数据集?
谢谢!
这可以通过使用包 data.table
来实现。
对象 TITANIC3
属于 class data.frame
。首先,您需要将其转换为 class data.table
。使用 data.table 时,您可以直接在一行中定义基于聚合和分组子句的新列。
只需 运行 下面的代码。
具有条件生存概率的新列是survival_prob
。
我总是建议使用 data.table
,因为它是在 R 中操作数据的最快方法。但是,如果您想使用 data.frame
进行分析,只需使用命令 setDF(titanic3)
将对象返回 class 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)]
我有泰坦尼克号数据集,我想在其中找到基于 3 个条件的生存概率。下面table给出概率。
library(PASWR2)
tab = with(TITANIC3, ftable(fare = fare > 200, pclass, sex, survived)) %>% prop.table(1) %>% round(3) * 100
tab
有没有一种简单的方法可以将 tab
table 中的概率作为新列添加到 TITANIC3 数据集?
谢谢!
这可以通过使用包 data.table
来实现。
对象 TITANIC3
属于 class data.frame
。首先,您需要将其转换为 class data.table
。使用 data.table 时,您可以直接在一行中定义基于聚合和分组子句的新列。
只需 运行 下面的代码。
具有条件生存概率的新列是survival_prob
。
我总是建议使用 data.table
,因为它是在 R 中操作数据的最快方法。但是,如果您想使用 data.frame
进行分析,只需使用命令 setDF(titanic3)
将对象返回 class 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)]