繁体   English   中英

使用dplyrXdf将连续变量转换为类别

[英]Converting continuous variable to categorical with dplyrXdf

我正在尝试对某些数据进行一些初步探索。 我正在忙于分析连续变量的单向方法,方法是将它们转换为因子并按频段计算频率。

我想用dplyrXdf做到这一点,但对于我尝试的工作,它似乎与普通的dplyr不太一样

sample_data <- RxXdfData("./data/test_set.xdf") #sample xdf for testing
as_data_frame <- rxXdfToDataFrame(sample_data) #same data as dataframe

# Calculate freq by Buildings Sum Insured band 

下面的代码将我的示例数据作为数据框导入

buildings_ad_fr <- as_data_frame %>% 
  mutate(bd_cut = cut(BD_INSURED_VALUE, seq(from = 150000, to = 10000000,by = 5000000))) %>% 
  group_by(bd_cut) %>% 
  summarise(exposure = sum(BENEFIT_EXPOSURE, na.rm = TRUE),
            ad_pd_f = sum(ACT_AD_PD_CLAIM_COUNT)/sum(BENEFIT_EXPOSURE, na.rm = TRUE))

但是我无法使用数据的xdf版本执行相同的操作

buildings_ad_fr_xdf <- sample_data %>% 
      mutate(bd_cut = cut(BD_INSURED_VALUE, seq(from = 150000, to = 10000000,by = 5000000))) %>% 
      group_by(bd_cut) %>% 
      summarise(exposure = sum(BENEFIT_EXPOSURE, na.rm = TRUE),
                ad_pd_f = sum(ACT_AD_PD_CLAIM_COUNT)/sum(BENEFIT_EXPOSURE, na.rm = TRUE))

我可以想到的解决方法是使用rxDataStep通过在transforms参数中传递bd_cut = cut(BD_INSURED_VALUE, seq(from = 150000, to = 10000000,by = 5000000))来创建新列,但不应有必要采取中间步骤。

我试过在group_by表达式之前使用.rxArgs函数,但这似乎也不起作用

buildings_ad_fr <- sample_data %>% 
  mutate(sample_data,.rxArgs = list(transforms = list(bd_cut = cut(BD_INSURED_VALUE,
                                                                   seq(150000,
                                                                       10000000,
                                                                       5000000)))))%>%
  group_by(bd_cut) %>% 
    summarise(exposure = sum(BENEFIT_EXPOSURE, na.rm = TRUE),
            ad_pd_f = sum(ACT_AD_PD_CLAIM_COUNT)/sum(BENEFIT_EXPOSURE, na.rm = TRUE))

两次在xdf文件上都给出Error in summarise.RxFileData(., exposure = sum(BENEFIT_EXPOSURE, na.rm = TRUE),: with xdf tbls only works with named variables, not expressions错误Error.RxFileData Error in summarise.RxFileData(., exposure = sum(BENEFIT_EXPOSURE, na.rm = TRUE),: with xdf tbls only works with named variables, not expressions

现在,我知道此程序包可以分解变量,但是我不确定如何使用它拆分连续变量

有谁知道如何做到这一点?

mutate应该可以。 对于Xdf文件, summarise是不同的:

  • 内部summarise将在默认情况下运行rxCuberxSummary ,它们会自动删除NA。 您不需要na.rm=TRUE

  • 您不能总结一个表达式。 解决方案是运行摘要,然后计算表达式:

xdf %>%
    group_by(*) %>%
    summarise(expos=sum(expos), pd=sum(clms)) %>%
    mutate(pd=pd/expos)

我还刚刚将dplyXdf更新为0.10.0 beta ,它增加了对HDFS / Spark和dplyr 0.7的支持以及一些实用的实用程序功能。 如果尚未使用它,则可能需要将其签出。 正式版本应在下一个MRS版本问世时进行。

暂无
暂无

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

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