如何在R中创建具有特定列条目的另一个表的子表?

问题描述 投票:0回答:1

我有下表

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"))]
r data.table subset subtable
1个回答
0
投票

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]

© www.soinside.com 2019 - 2024. All rights reserved.