gpt4 book ai didi

R:使用日期列表作为过滤器对数据框进行子集化

转载 作者:行者123 更新时间:2023-12-03 10:56:18 25 4
gpt4 key购买 nike

我有一个带有日期列和其他一些值列的数据框。我想从数据框中提取日期列与预先存在的日期列表中的任何元素相匹配的那些行。例如,使用一个元素的列表,日期“2012-01-01”将从数据框中拉出日期为“2012-01-01”的行。

对于数字,我想我知道如何匹配这些值。这段代码:

testdf <- data.frame(mydate = seq(as.Date('2012-01-01'), 
as.Date('2012-01-10'), by = 'day'),
col1 = 1:10,
col2 = 11:20,
col3 = 21:30)

...产生这个数据框:
       mydate col1 col2 col3
1 2012-01-01 1 11 21
2 2012-01-02 2 12 22
3 2012-01-03 3 13 23
4 2012-01-04 4 14 24
5 2012-01-05 5 15 25
6 2012-01-06 6 16 26
7 2012-01-07 7 17 27
8 2012-01-08 8 18 28
9 2012-01-09 9 19 29
10 2012-01-10 10 20 30

我可以做这个:
testdf[which(testdf$col3 %in% c('25','29')),]

产生这个:
      mydate col1 col2 col3
5 2012-01-05 5 15 25
9 2012-01-09 9 19 29

我可以将其概括为这样的列表:
myvalues <- c('25','29')
testdf[which(testdf$col3 %in% myvalues),]

我得到相同的输出。所以我以为我可以对日期使用相同的方法,但似乎我错了。这样做:
testdf[which(testdf$mydate %in% c('2012-01-05','2012-01-09')),]

给我这个:
[1] mydate col1   col2   col3  
<0 rows> (or 0-length row.names)

在他们自己的列表中弹出日期 - 这是最终目标 - 也无济于事。我可以想出用循环或应用函数来解决这个问题的方法,但在我看来,必须有一种更简单的方法来满足可能相当普遍的要求。是不是我又忽略了一些简单的事情?

问:如何对具有日期列的数据框的行进行子集化,这些列的值与日期列表之一相匹配?

最佳答案

您必须转换日期 stringDate变量使用 as.Date (在控制台尝试 ?as.Date)。奖励:你可以放弃:

> testdf[testdf$mydate %in% as.Date(c('2012-01-05', '2012-01-09')),]
mydate col1 col2 col3
5 2012-01-05 5 15 25
9 2012-01-09 9 19 29

关于R:使用日期列表作为过滤器对数据框进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11464578/

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