繁体   English   中英

如何根据用户指定的条件对数据帧进行子集

[英]How to subset data frame based on user specified conditions

我有一个数据框,其中包含三个不同的贷款人口(A,B和C)。 每个贷款人口都有两个子组(NR,RF)。 数据框还具有贷款级别年份和风险类型信息。

我需要编写函数以根据用户定义参数对数据帧进行子集化。 用户可以选择运行整个贷款人口,也可以选择单个人口,子组,风险类型或这些变量的任意组合。 例如:用户可能希望仅将pop ='A'子集或仅将pop ='C'子集&year == 2001或risk_type == 3。

有人可以建议我可以完成此任务的方法吗?

这是样本数据;

df <- data.frame(id=c(1:10),
         pop=c(rep('A',3),rep('B',3),rep('C',4)),
         subgroup=c('NR','NR','RF','RF','NR','RF','NR','NR','RF','NR'),
         year=c(2000,2001,2002,2000,2001,2002,2000,2001,2002,2002),
         risk_type=c(1,1,3,2,2,3,1,3,2,1)
         )

您可以对dplyr过滤器做一个简单的包装:

library(dplyr)
library(lazyeval)

df_subset_ = function(condition)
  df %>% filter_(.dots = condition)

df_subset = function(condition)
  df_subset_(lazy(condition))

df_subset(pop == 'C' & year == 2001)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM