gpt4 book ai didi

r - 将时间序列中的分类列扩展为多个每秒计数列

转载 作者:行者123 更新时间:2023-12-05 00:03:35 24 4
gpt4 key购买 nike

进行以下转换的最佳方法是什么?这种转换有两个部分。第一个是将速度转换为每秒平均值。第二种是将分类列转换为多列——每个分类值一列,其中值是每秒出现的次数。例如:

输入(xts A):

Time(PosixCT), Observed Letter, Speed
2011/01/11 12:12:01.100,A,1
2011/01/11 12:12:01.200,A,2
2011/01/11 12:12:01.400,B,3
2011/01/11 12:12:01.800,C,4
2011/01/11 12:12:02.200,D,2
2011/01/11 12:12:02.200,A,7

输出:(xts B)
Time, A_Per_Second, B_Per_Second, C_Per_Second, D_Per_Second, Aggregate_Speed
2011/01/11 12:12:01,2,1,1,0,2.5
2011/01/11 12:12:02,1,0,0,1,4.5

我希望以不需要知道所有类别的方式来执行此操作。基本上,我试图在不丢失任何分类数据的情况下将时间折叠到每秒,并将数字数据汇总为每秒平均值。

最佳答案

我不经常使用时间序列格式的数据(即 xts ),所以我提供了一个使用 data.frame 中的数据的解决方案格式。

(另请注意,我已将此数据框的列名称更改为单个单词以使其更易于使用。我在此问题的末尾发布了我的数据框的结构。)

我使用两个包:

  • HMisctrunc POSIXt 类的方法
  • plyr使用一些魔法来拆分、应用和组合数据

  • 编码:
    A <- as.data.frame(A)

    library(Hmisc)
    A$Date <- trunc(A$Date, units="secs")
    A

    library(plyr)
    ddply(A, .(Date, Observed), summarise, Speed=mean(Speed))

    结果与您指定的格式略有不同,但应该很容易将其改造成您要求的宽格式。
                     Date Observed Speed
    1 2011-01-11 12:12:01 A 1.5
    2 2011-01-11 12:12:01 B 3.0
    3 2011-01-11 12:12:01 C 4.0
    4 2011-01-11 12:12:02 A 7.0
    5 2011-01-11 12:12:02 D 2.0

    这是 dput A的结果:
    A <- structure(list(Date = structure(list(sec = c(1, 1, 1, 1, 2, 2
    ), min = c(12L, 12L, 12L, 12L, 12L, 12L), hour = c(12L, 12L,
    12L, 12L, 12L, 12L), mday = c(11L, 11L, 11L, 11L, 11L, 11L),
    mon = c(0L, 0L, 0L, 0L, 0L, 0L), year = c(111L, 111L, 111L,
    111L, 111L, 111L), wday = c(2L, 2L, 2L, 2L, 2L, 2L), yday = c(10L,
    10L, 10L, 10L, 10L, 10L), isdst = c(0L, 0L, 0L, 0L, 0L, 0L
    )), .Names = c("sec", "min", "hour", "mday", "mon", "year",
    "wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt"), tzone = c("",
    "GMT", "BST")), Observed = structure(c(1L, 1L, 2L, 3L, 4L, 1L
    ), .Label = c("A", "B", "C", "D"), class = "factor"), Speed = c(1L,
    2L, 3L, 4L, 2L, 7L)), .Names = c("Date", "Observed", "Speed"), row.names = c(NA,
    -6L), class = "data.frame")

    关于r - 将时间序列中的分类列扩展为多个每秒计数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790695/

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