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

使用dplyrXdf将连续变量转换为分类变量,r,dplyr,microsoft-r,R,Dplyr,Microsoft R,我正在尝试对一些数据进行初步探索。我正忙着分析连续变量的一种方法,将它们转换成因子,并按频带计算频率 我想用dplyrXdf来实现这一点,但对于我正在尝试的东西,它似乎不像普通的dplyr那样工作 sample_data <- RxXdfData("./data/test_set.xdf") #sample xdf for testing as_data_frame <- rxXdfToDataFrame(sample_data) #same data as dataframe #

我正在尝试对一些数据进行初步探索。我正忙着分析连续变量的一种方法,将它们转换成因子,并按频带计算频率

我想用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 
在xdf文件上,两次都会在summary.RxFileData.,exposure=sumferience\u exposure,na.rm=TRUE中给出错误:使用xdf tbls时,仅对命名变量有效,而不对表达式有效

现在我知道这个包可以分解变量,但我不知道如何使用它来分解连续变量

有人知道怎么做吗

突变应该是好的。Xdf文件的摘要不同:

默认情况下,Internal Summary将运行rxCube或rxSummary,这将自动删除NAs。您不需要na.rm=TRUE

你不能用一个表达式来概括。解决方案是运行摘要,然后计算表达式:


我还刚刚介绍了,它添加了对HDFS/Spark和dplyr0.7的支持,以及一些漂亮的实用功能。如果您还没有使用它,您可能想查看它。正式发布应该在下一个MRS版本发布时进行。

再次感谢!你的解决方案奏效了——而且在dplyrxdf上的东西很棒——我马上就要更新了!下面是关于dplyrXdf 0.10中新功能的详细信息。
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))
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))
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 %>%
    group_by(*) %>%
    summarise(expos=sum(expos), pd=sum(clms)) %>%
    mutate(pd=pd/expos)