我有下表
dT
:
structure(list(delivDate = structure(c(20489, 20500, 20516, 20517,
20518, 20533), class = "Date"), priceDate = structure(c(19724,
19724, 19724, 19724, 19724, 19724), class = "Date"), priceIndex = c("KELAG HPFC DE",
"HPFC DE", "HPFC DE", "HPFC DE", "HPFC DE",
"HPFC DE"), avgPrice = c(109.65, 104.35, 104.5, 103.91,
100.38, 76.57), quarters = c("Q1", "Q1", "Q1", "Q1", "Q1", "Q1"
)), row.names = c(NA, -6L), class = c("data.table", "data.frame"
))
现在,我尝试创建一个新的子集表,其中包含原始表
dT
的所有列,但仅包含这些行,它们代表三个特定的priceDate
值。
我尝试了以下两个选项,它们都会产生空数据表:
1)
DT <- DT[priceDate %in% c("2024-01-02", "2024-03-05", "2024-03-12"), ]
2)
base::subset(dT, (priceDate == '2024-01-02') & (priceDate == '2024-03-05') & (priceDate == '2024-03-12'))
两者都会产生以下错误:空 data.table(0 行和 5 列):delivDate,priceDate,priceIndex,avgPrice,quarters。
我做错了什么?
编辑: 来自 @Soren 的评论适用于我的示例数据:
dTNew <- dT[priceDate %in% as.Date(c("2024-01-02", "2024-03-05", "2024-03-12"))]
library(data.table)
data <- structure(list(delivDate = structure(c(20489, 20500, 20516, 20517, 20518, 20533), class = "Date"),
priceDate = structure(c(19724, 19724, 19724, 19724, 19724, 19724), class = "Date"),
priceIndex = c("KELAG HPFC DE", "HPFC DE", "HPFC DE", "HPFC DE", "HPFC DE", "HPFC DE"),
avgPrice = c(109.65, 104.35, 104.5, 103.91, 100.38, 76.57),
quarters = c("Q1", "Q1", "Q1", "Q1", "Q1", "Q1")),
row.names = c(NA, -6L),
class = c("data.table", "data.frame"))
specific_dates <- as.Date(c("2024-01-02", "2021-01-02", "2021-01-03"))
subset_data <- data[priceDate %in% specific_dates]