如何将函数应用于按 R 中的分类变量筛选的一系列数据帧



我有一个数据框 df 包含 3 个数值变量,1 个结果和 1 个分类变量

我需要执行一个过程,该过程涉及按类别 A 或 B 的不同级别过滤 df,然后将它们转储到诸如 binnedplot 之类的函数中,以检查分类变量和数值变量之间的相互作用。

DF示例:

set.seed(10)
df=data.frame(num1=sample(100,60), 
num2=sample(100,60), 
num3=sample(100,60),
category=as.factor(rep(c("A","B"),30)),
outcome=sample(c(0,1),60, replace=T))
df1=df%>%filter(category=="A")
df2=df%>%filter(category=="B")
binnedplot(df1$num1, df1$outcome)
binnedplot(df2$num1, df2$outcome)
binnedplot(df1$num2, df1$outcome)
binnedplot(df2$num2, df2$outcome)
binnedplot(df1$num3, df1$outcome)
binnedplot(df2$num3, df2$outcome)

更新:

split.dfs<-split(df, df$category)
par(mar=c(1,1,1,1))
par(mfcol=c(2,1))
lapply(split.dfs, function(x) lapply(df[1:3], function(x) binnedplot(x, df$outcome, main=df$category)))

最初,我想知道如何以更具可扩展性的方式通过函数执行此操作,例如我可以处理更多的数字和分类列而不会重复太多。

现在有了更新的代码(仍然有错误(,我的主要问题是如何用正确的类别标题标记 3 个 2x1 面板,以及如何用 num1/num2/num3 标记 x 轴以保持绘图的清晰度。

您可以使用bylapply的组合:

library(arm)
by(df, df$category,
function(x) lapply(subset(x, select = -c(category, outcome)),
binnedplot, x$outcome))

相关内容

  • 没有找到相关文章

最新更新