簡體   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