我想在数据表中总结一组观察结果,并可以在语法上使用一些帮助。
我认为这就像连接一样简单,但我试图确定在特定观察日看到的特定值,即使它在当天跨越多个测量值或传感器。
- 观察结果按日期汇总
- 观察日期有不同的测量计数(每个日期的行数)
- “测量”列表示当天在任何传感器中都观察到了特定值。
我创建了 2 个样本数据集,希望能阐明目标。我还创建了一个 Excel 电子表格的图像,希望显示数据之间的关系。
library(data.table)
raw <- data.table(
Date = as.Date(c("2013-5-4","2013-5-4","2013-5-4", "2013-5-9","2013-5-9", "2013-5-16","2013-5-16","2013-5-16", "2013-5-30")),
S1 = c(4, 2, 3, 1, 1, 8, 7, 3, 3),
S2 = c(2, 5, 2, 4, 4, 9, 1, 6, 4),
S3 = c(6, 2, 2, 7, 3, 2, 7, 2, 1)
)
summarized <- data.table(
Date = as.Date(c("2013-5-4", "2013-5-9", "2013-5-16", "2013-5-30")),
M1 = c(FALSE,TRUE,TRUE,TRUE),
M2 = c(TRUE,FALSE,TRUE,FALSE),
M3 = c(TRUE,TRUE,TRUE,TRUE),
M4 = c(TRUE,FALSE,FALSE,TRUE),
M5 = c(TRUE,FALSE,FALSE,FALSE),
M6 = c(TRUE,FALSE,TRUE,FALSE),
M7 = c(FALSE,TRUE,TRUE,FALSE),
M8 = c(FALSE,FALSE,TRUE,FALSE),
M9 = c(FALSE,FALSE,TRUE,FALSE),
M10 = c(FALSE,FALSE,TRUE,FALSE)
)
Excel
原始是测量输入。多个测量可以发生在同一观察日期(即多行)。
总结是我希望得到的。行被汇总,“m”测量列仅表明在任何 V 列中当天观察到的值(在 M 之后,即 M1、M2 之后)。例如,在 5/16 的第一次和最后一次观察中看到了数字 2,但在 5/16 的 9 个值中的任何一个中都没有看到数字 5。
我想我需要使用连接,但如何计算 M 列让我无法理解。
任何帮助深表感谢。
问题:这种类型的操作在数据科学或数学中有名称吗?
更新:我正在尝试以下
setkey(raw,Date)
s <- data.table( Date=unique(raw$Date)) # get a datatable of the unique dates
setkey(s,Date)
s[raw, M1:=(length(na.omit(match(c(raw$V1,raw$v2,raw$v3),1)))>=1)]
请注意,这些值不是 5-4 的预期值(应该是 FALSE)。我认为这是因为原始行在我的匹配语句中不受限制。
Date M1
1: 2013-05-04 TRUE
2: 2013-05-09 TRUE
3: 2013-05-16 TRUE
4: 2013-05-30 TRUE
我的猜测是我需要使用不同的方法来对连接中的原始行进行子集化。