gpt4 book ai didi

r - 检查存储在 data.table 中的参差不齐的面板中是否缺少项目

转载 作者:行者123 更新时间:2023-12-04 12:20:48 25 4
gpt4 key购买 nike

我有一个大数据集

 dim(dt)
[1] 422096 162

其中 dt 是一个 data.table,其键为 tic。我正在尝试衡量每组我有多少丢失的条目。这些组是时间序列,dt 包含一个 date 列,这是一个 R 日期,还有一个 book_lev 列,我感兴趣的变量。

到目前为止,这是我的代码:

dt <- dt[sumdt]
sumdt <- dt[ ,list(min.date=min(date), max.date=max(date)), by="tic"]

sublengths <- dt[,list(tslen=length(date)),by=tic, mult="last"]
bt2 <- dt[sublengths, mult="first"]
bt2[, max.year:=extractyear(max.date)]
bt2[, min.year:=extractyear(min.date)]
bt2[, data.fullness:=tslen/(max.year - min.year + 1)]

dt <- dt[bt2]

我的想法是我创建了这个 data.fullness 值,如果时间序列中没有漏洞,它应该等于 1。我意识到我的 book_lev 列中可能有一些 NA,所以我想进一步限制。另外,总的来说,我是 data.tables 的新手,我想看看是否有更好的方法来编写我刚刚编写的内容。

您可以使用 R 的 load 命令加载一小部分数据,此处提供:http://econsteve.com/r/dt_sample.Robj

最佳答案

(首先,一个警告。我不确定我是否正确理解了您希望您的 data.fullness 变量总结的内容。根据您链接到的数据集,我正在接受它是从第一个测量年份到最后一个测量年份的间隔中有一些数据的年份的比例。)

这是我确实理解的解决问题的方法:

## FIRST, DEFINE A COUPLE OF FUNCTIONS

extractYear <- function(X) {
as.numeric(format(as.Date(X, format="%m/%d/%Y"), "%Y"))
}

calcFullness <- function(YRS) {
length(unique(YRS))/(diff(range(YRS))+1)
}

## THEN SET TO WORK ON YOUR DATA.TABLE

key(dt) <- "tic"
dt[, year:=extractYear(datadate)]

# Extract summaries for each level of tic
ticSumm <-
dt[, list(min.year = min(year),
max.year = max(year),
data.fullness = calcFullness(year)), by=tic]
ticSumm
# tic min.year max.year data.fullness
# [1,] AMZN 1995 2010 1
# [2,] GM 1950 2010 1
# [3,] XOM 1950 2010 1


# Merge summary back into dt
dt <- dt[ticSumm]

关于r - 检查存储在 data.table 中的参差不齐的面板中是否缺少项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497261/

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