gpt4 book ai didi

r - 数据框的差异子列表

转载 作者:行者123 更新时间:2023-12-02 00:27:23 24 4
gpt4 key购买 nike

我有一个数据框,其中包含时间轴中出现的多个交错值。我想创建一个包含行号(基本上是行 ID)、文件描述符、操作和“大小”值的新数据框。

例子:

  line fd syscall       size
1 1 1 lseek 1289020416
2 2 1 lseek 1289021440
3 3 2 lseek 1289024512
4 4 1 lseek 1289025536
5 5 2 lseek 1289026560
6 6 1 lseek 1289027584

我想计算大小值的差异per fd 并显示差异的起点。 diff 函数本身会丢弃大量数据。是否有类似的东西可以帮助我了解上下文(例如,每行的开头在哪里)?

我想要如下所示的结果,其中我知道自上一行以来每个 fd 移动了多远,以及上一行是什么。

  line fd diff
1 1 1 1024
2 2 1 4096
3 3 2 2048
4 4 1 2048

有什么我可以做的比将它全部撕开并循环更容易的事情吗?我不得不相信有人有更好的 diff

示例输入:

structure(list(line = 1:6, fd = c(1, 1, 2, 1, 2, 1), syscall = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), class = "factor", .Label = "lseek"), size = c(1289020416,
1289021440, 1289024512, 1289025536, 1289026560, 1289027584)), .Names = c("line",
"fd", "syscall", "size"), row.names = c(NA, -6L), class = "data.frame")

最佳答案

使用 plyr 将 data.frame 切割成碎片并转换以附加新向量。

library(plyr)
ddply(dtf, .(fd), function(x) transform(x, diff = c(x$size[1], diff(x$size))))

关于r - 数据框的差异子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com