社区首页 >问答首页 >使用滞后值的rxDataStep

使用滞后值的rxDataStep
EN

Stack Overflow用户
提问于 2015-04-16 05:21:40
回答 2查看 442关注 0票数 1

在SAS中,它可以遍历数据集并使用滞后值。

我这样做的方法是使用一个做“滞后”的函数,但这大概会在块的开头产生一个错误的值。例如,如果一个块开始于第200,000行,那么它将假定安娜的值为滞后值,这个值应该来自199,999行。

有什么解决办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 05:34:17

以下是另一种滞后的方法:使用移位日期进行自合并。这大大简化了代码编写,并且可以同时延迟多个变量。缺点是使用transformFunc运行比我的答案长2-3倍,并且需要数据集的第二份副本。

代码语言:javascript
代码运行次数:0
复制
# Get a sample dataset
sourcePath <- file.path(rxGetOption("sampleDataDir"), "DJIAdaily.xdf")

# Set up paths for two copies of it
xdfPath <- tempfile(fileext = ".xdf")
xdfPathShifted <- tempfile(fileext = ".xdf")


# Convert "Date" to be Date-classed
rxDataStep(inData = sourcePath,
           outFile = xdfPath,
           transforms = list(Date = as.Date(Date)),
           overwrite = TRUE
)


# Then make the second copy, but shift all the dates up 
# one (or however much you want to lag)
# Use varsToKeep to subset to just the date and 
# the variables you want to lag
rxDataStep(inData = xdfPath,
           outFile = xdfPathShifted,
           varsToKeep = c("Date", "Open", "Close"),
           transforms = list(Date = as.Date(Date) + 1),
           overwrite = TRUE
)

# Create an output XDF (or just overwrite xdfPath)
xdfLagged2 <- tempfile(fileext = ".xdf")

# Use that incremented date to merge variables back on.
# duplicateVarExt will automatically tag variables from the 
# second dataset as "Lagged".
# Note that there's no need to sort manually in this one - 
# rxMerge does it automatically.
rxMerge(inData1 = xdfPath,
        inData2 = xdfPathShifted,
        outFile = xdfLagged2,
        matchVars = "Date",
        type = "left",
        duplicateVarExt = c("", "Lagged")
)
票数 0
EN

Stack Overflow用户

发布于 2015-06-16 09:55:57

你对块状问题的看法完全正确。解决方法是使用rxGetrxSet在块之间传递值。以下是功能:

代码语言:javascript
代码运行次数:0
复制
lagVar <- function(dataList) { 

     # .rxStartRow returns the overall row number of the first row in this
     # chunk. So - the first row of the first chunk is equal to one.
     # If this is the very first row, there's no previous value to use - so
     # it's just an NA.
     if(.rxStartRow == 1) {

        # Put the NA out front, then shift all the other values down one row.
        # newName is the desired name of the lagged variable, set using
        # transformObjects - see below
        dataList[[newName]] <- c(NA, dataList[[varToLag]][-.rxNumRows]) 

    } else {

        # If this isn't the very first chunk, we have to fetch the previous
        # value from the previous chunk using .rxGet, then shift all other
        # values down one row, just as before.
        dataList[[newName]] <- c(.rxGet("lastValue"),
                                 dataList[[varToLag]][-.rxNumRows]) 

      }

    # Finally, once this chunk is done processing, set its lastValue so that
    # the next chunk can use it.
    .rxSet("lastValue", dataList[[varToLag]][.rxNumRows])

    # Return dataList with the new variable
    dataList

}

以及如何在rxDataStep中使用它

代码语言:javascript
代码运行次数:0
复制
# Get a sample dataset
xdfPath <- file.path(rxGetOption("sampleDataDir"), "DJIAdaily.xdf")

# Set a path to a temporary file
xdfLagged <- tempfile(fileext = ".xdf")

# Sort the dataset chronologically - otherwise, the lagging will be random.
rxSort(inData = xdfPath,
       outFile = xdfLagged,
       sortByVars = "Date")

# Finally, put the lagging function to use:
rxDataStep(inData = xdfLagged, 
           outFile = xdfLagged,
           transformObjects = list(
               varToLag = "Open", 
               newName = "previousOpen"), 
           transformFunc = lagVar,
           append = "cols",
           overwrite = TRUE)

# Check the results
rxDataStep(xdfLagged, 
           varsToKeep = c("Date", "Open", "previousOpen"),
           numRows = 10)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29676029

复制
相关文章
animate 动画滞后执行的解决方案
针对 jQuery 中 slideUp、slideDown、animate 等动画运用时出现的滞后反复执行等问题的解决方法有如下:
Krry
2018/09/10
1.2K0
[066]Camera360录像预览滞后
Camera360应用录像预览在我们的设备上存在滞后的问题。 具体现象在你快速摄像头角度的时候,预览画面不能及时更新到当前摄像头拍摄的角度的画面, 或者你拍你自己的手,快速握拳展开,预览画面需要延迟一些时间才能显示展开的手
王小二
2021/11/24
9490
[066]Camera360录像预览滞后
电流电压超前滞后的几个动图
网络声明:图片来源于网络,转载目的在于传递更多信息,版权归原作者所有,如涉及侵权,请后台联系硬件大熊进行处理。
硬件大熊
2022/12/06
5910
电流电压超前滞后的几个动图
动图详解电流电压的超前与滞后
由于Sin[ωt]在求导或积分后会出现Sin[ωt±90°],所以对于接上了正弦波的电感、电容,横坐标为ωt时可以观察到波形超前滞后的现象。
AI 电堂
2021/01/22
1K0
使用 %Status 值
许多类使用 %Status 数据类型类来表示状态信息,并且它们的方法返回表示成功或错误的 %Status 值(状态)。如果状态表示一个错误(或多个错误),则状态值还包括有关错误的信息。
用户7741497
2022/08/03
6600
如何使用枚举的组合值
有时我们需要将枚举定义为1,2,4,8.......的值,这样当传入一个3,那么就是表示1,2的组合,如果传入7,那就表示1,2,4的组合。要实现这种功能我们需要用到FlagsAttribute。具体用法如下:
深蓝studyzy
2022/06/16
3K0
EasyC++14,枚举值的使用
这种方式创建的为符号常量,可以代替const关键字,并且还可以自定义名字,让代码可读性更强。如:
TechFlow-承志
2022/08/26
5870
如何使用FME完成值的替换?
我们使用FME来完成各种替换,针对单个字符串,可以使用StringReplacer转换器来完成。StringReplacer转换器是一个功能强大的转换器,通过这个转换器,可以很方便的完成各种替换,甚至是将字段值映射为空。曾经在技术交流群里有个朋友提出:要将shp数据所有字段中为空格的值,批量改成空值。针对这个需求,我尝试了以下几种解决方式:
数据处理与分析
2019/07/31
4.7K0
如何使用FME完成值的替换?
使用Optioanl优雅的处理空值
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
chenchenchen
2019/11/12
1.9K0
使用VBA查找最接近的值
有时候,不一定会查找到精确的值,如果是这样的话,应该可以找到最接近的值。有很多公式可以实现,然而本文不使用公式,而是使用VBA代码来实现。
fanjy
2022/11/16
2.1K0
自回归滞后模型进行多变量时间序列预测
显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。
deephub
2023/01/18
1.1K0
解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug
众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接对状态进行修改。但是,SwiftUI 中的一些系统控件并没有完全遵循响应式的设计原则,由此在某些情况下会出现严重的错误,影响用户体验,并使开发者无所适从。
东坡肘子
2023/09/01
7630
解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug
Java取绝对值(绝对值函数的使用方法)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126869.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/01
13.4K0
Java取绝对值(绝对值函数的使用方法)
使用程序计算近似Π值
现在大多数语言,只需要调用一下Math.PI就可以知道Π值了。但是你有没有想过这个PI是怎么来的,是直接存储吗?还是计算来的。虽然不知道具体是怎么实现的,但是我们可以使用一些简单的数学知识,来计算出近似的Π值。
ZackSock
2022/11/11
1.7K0
使用程序计算近似Π值
解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug
众所周知,SwiftUI 是一个响应式框架,这意味着,当数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示时,应直接对状态进行修改。但是,SwiftUI 中的一些系统控件并没有完全遵循响应式的设计原则,由此在某些情况下会出现严重的错误,影响用户体验,并使开发者无所适从。
东坡肘子
2023/09/06
3700
解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug
【说站】mysql中null值的使用
以上就是mysql中null值的使用,希望对大家有所帮助。更多mysql学习指路:MySQL
很酷的站长
2022/11/24
2.1K0
【说站】mysql中null值的使用
移除重复值,使用VBA的RemoveDuplicates方法
查找重复值、移除重复值,都是Excel中的经典问题,可以使用高级筛选功能,也可以使用复杂的公式,还可以使用VBA。
fanjy
2022/03/07
8.2K0
移除重复值,使用VBA的RemoveDuplicates方法
Redis二值状态统计的巧妙使用
这里的二值状态就是指集合元素的取值就只有 0 和 1 两种。在签到打卡的场景中,我们只用记录:
chengcheng222e
2021/11/04
7920
使用BigDecimal 进行浮点值的精确计算
输出打印为: b1=>7.2882 b2=>7.1 7.22-7.0=0.1882
Dream城堡
2019/01/28
1.6K0
Go:命名返回值和直接返回值的使用与潜在隐患
在这个例子中,虽然给命名返回值result赋值了,但最终函数却直接返回了a + b的计算结果,而不是result的值。
运维开发王义杰
2023/08/21
3120
Go:命名返回值和直接返回值的使用与潜在隐患

相似问题

使用rxDataStep和mclapply创建滞后值数组

12

微软R rxDataStep - RowSelection

20

使用准引号的rxDataStep“转换”参数

12

在RevoScaleR包中使用rxDataStep的"apply“函数

10

使用“rxDataStep”时关于transformFunc的几个问题

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文