【问题标题】:How to subset data frame based on user specified conditions如何根据用户指定的条件对数据框进行子集化
【发布时间】:2015-10-29 19:58:52
【问题描述】:

我有一个数据框包含三个不同的贷款人群(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)
         )

【问题讨论】:

  • my_subset = function(...) subset(df,...); my_subset(pop == "C") 或者只是使用香草subset;我真的不知道“用户”在这里与您的数据交互意味着什么。

标签: r dplyr


【解决方案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)

【讨论】:

    猜你喜欢
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多