我正在尝试对某些数据进行一些初步探索。我正在忙着分析连续变量的单向方法,将它们转换为因子并按频带计算频率。
我想用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通过在变换参数中传递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
现在我知道这个包可以分解变量,但我不知道如何使用它来分割连续变量
有谁知道怎么做?
答案 0 :(得分:1)
mutate
应该没问题。 summarise
对于Xdf文件是不同的:
内部summarise
默认会运行rxCube
或rxSummary
,这会自动删除新来的内容。您不需要na.rm=TRUE
。
您无法对表达式进行总结。解决方案是运行汇总,然后计算表达式:
xdf %>%
group_by(*) %>%
summarise(expos=sum(expos), pd=sum(clms)) %>%
mutate(pd=pd/expos)
我还只是updated dplyXdf to 0.10.0 beta,它增加了对HDFS / Spark和dplyr 0.7的支持以及几个漂亮的实用功能。如果您还没有使用它,可能需要查看它。正式发布应该在下一个MRS版本发布时发生。