gpt4 book ai didi

在不规则间隔内 reshape 和汇总数据

转载 作者:行者123 更新时间:2023-12-02 08:22:42 27 4
gpt4 key购买 nike

我有以下格式的数据集:

 person surveyDate value
a 2006 35
a 2009 44
b 2005 24
b 2007 38
c 2006 51
c 2007 52
c 2009 49

...我想将其 reshape 为如下所示:

person dateDiff valueDiff
a 3 9
b 2 14
c 3 -2

...其中 dateDiff 是每个人最早和最新 surveyDate 之间的差异,valueDiff 是每个人最早和最新值之间的差异。请注意,有些人接受的调查比其他人多,调查之间的时间也不同。

我一直在尝试使用 data.table(和 melt/dcast)来执行此操作,但尝试使用分配新的列值:= in j 让我完全难住了。欢迎使用其他方法。速度不是一个大问题,因为数据集不是很大。

最佳答案

你可以做到

DT[, .SD[.N] - .SD[1], by = person]

# person surveyDate value
# 1: a 3 9
# 2: b 2 14
# 3: c 3 -2

如果一个组只有 .N==1 观察值,差异将显示为零。

或者,...

DT[, lapply(.SD, function(x) x[.N]-x[1]), by = person]

OP 报告的速度要快得多。

关于在不规则间隔内 reshape 和汇总数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442395/

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