首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量时RevoScaleR rxDataStep行选择失败

使用变量时RevoScaleR rxDataStep行选择失败
EN

Stack Overflow用户
提问于 2017-11-23 17:22:25
回答 1查看 295关注 0票数 0

我试图用rxDataStep对xdf文件执行选择。我使用的是rowSelection,当我使用显式值时,它会工作,但当我使用变量时,它就不会起作用,例如:

代码语言:javascript
复制
tmp <- rxDataStep(alias.Xdf, transforms = list(TT_AMOUNT = DC_AMOUNT * RT_AMOUNT, UNIT_PRICE = RT_VALUE / TT_AMOUNT), varsToKeep = c('DC_AMOUNT', 'RT_AMOUNT', 'RT_VALUE'), 
            rowSelection = (A_ID == 1646041))

但这并不意味着:

代码语言:javascript
复制
x <- 1646041
tmp <- rxDataStep(alias.Xdf, transforms = list(TT_AMOUNT = DC_AMOUNT * RT_AMOUNT, UNIT_PRICE = RT_VALUE / TT_AMOUNT), varsToKeep = c('DC_AMOUNT', 'RT_AMOUNT', 'RT_VALUE'), 
             rowSelection = (A_ID == x))

它失败的消息如下:

代码语言:javascript
复制
ERROR: The sample data set for the analysis has no variables.
Caught exception in file: CxAnalysis.cpp, line: 3848. ThreadID: 31156 Rethrowing.
Caught exception in file: CxAnalysis.cpp, line: 5375. ThreadID: 31156 Rethrowing.

这里怎么了?我已经胡思乱想了好几个小时了,我在网上找到的每一个新税都试过了。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 18:04:19

我们可能需要在transformObjects上传递它

代码语言:javascript
复制
library(RevoScaleR)
rxDataStep(alias.Xdf, transforms = list(TT_AMOUNT = DC_AMOUNT * RT_AMOUNT, 
       UNIT_PRICE = RT_VALUE / TT_AMOUNT),
       varsToKeep = c('DC_AMOUNT', 'RT_AMOUNT', 'RT_VALUE'), 
         rowSelection = (A_ID == x1), transformObjects = list(x1=x))

使用可复制的示例

代码语言:javascript
复制
set.seed(100)
myData <- data.frame(x = 1:100, y = rep(c("a", "b", "c", "d"), 25),
                 z = rnorm(100), w = runif(100))

z1 <- 2


myDataSubset <- rxDataStep(inData = myData,
                       varsToKeep = c("x", "w", "z"),
                rowSelection = z > zNew,
                        transformObjects = list(zNew=z1))
#Rows Read: 100, Total Rows Processed: 100, Total Chunk Time: 0.007 seconds 
myDataSubset
#   x          w        z
#1 20 0.03609544 2.310297
#2 64 0.79408518 2.581959
#3 96 0.07123327 2.445683

这也可以用dplyr来完成。

代码语言:javascript
复制
library(dplyr)
myData %>%
      select(x, w, z) %>%
      filter(z > z1)
#   x          w        z
#1 20 0.03609544 2.310297
#2 64 0.79408518 2.581959
#3 96 0.07123327 2.445683
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47460734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档