说我有一个矩阵。有一列显示日期信息,从第一行“20080101”到最后一行“20100101”。问题是,如何从日期“20080901”到“20091031”获取行?它在R中运行。
示例:
2008010106 a
2008010112 b
2008010118 f
2008010206 e
2008010200 w
2008010212 a
2008010218 b
2008010300 f
2008010406 e
2008010306 a
2008010312 b
2008010318 f
2008010400 r
2008010412 e
第一列是日期(最后两位数表示一天中的小时数)。第二列是所有字母。
现在我想从“2008010200”到“2008010412”获取行
注意日期不是按顺序排列的。
答案 0 :(得分:2)
我喜欢这种事情的xts
子集。
library(xts)
m <- cbind(date=seq(20080101, 20080131, 1),
matrix(runif(31*2), ncol=2))
x <- xts(m[, -1], as.Date(as.character(m[, 1]), '%Y%m%d'))
x['20080110/20080120']
# 2008-01-10 0.4819532 0.9406910
# 2008-01-11 0.5447225 0.5776338
# 2008-01-12 0.5614482 0.4152551
# 2008-01-13 0.2356413 0.9192496
# 2008-01-14 0.9759123 0.8141157
# 2008-01-15 0.2912074 0.3847100
# 2008-01-16 0.2185788 0.6909651
# 2008-01-17 0.6544894 0.3287306
# 2008-01-18 0.1319076 0.6527686
# 2008-01-19 0.6391880 0.5336123
# 2008-01-20 0.6915097 0.4842339
以上示例返回日期介于2008年1月10日至2008年1月20日期间的x
行。
答案 1 :(得分:0)
评估第n列的逻辑表达式表示第10列可用于&#34; i&#34; "["
的论据。
n=10
shorterM <- M[ M[,n] >= "20080101" & M[,n] <= "20100101" , ]
这应该适用于矩阵或数据帧,只要这些&#34;日期&#34;实际上是具有该格式的字符值。 &#34;&gt; =&#34;,&#34;&lt; =&#34; abd&#34;&amp;&#34;运算符都是矢量化的。这是&#34;逻辑索引&#34;。由于大多数受访者认为这是您的工作而且可能无法测试(因为我没有),因此您在发布没有代码的问题时会冒险。下次发布一个小例子,最好是dput
函数,并指出正确答案是什么。然后你得到经过测试的代码,每个人都很开心,你没有得到密切的投票......除非当然这是一个副本,这当然是可能的。
提供的示例用作工作示例:
> DD <- read.table(text="2008010106 a
+ 2008010112 b
+ 2008010118 f
+ 2008010206 e
+ 2008010200 w
+ 2008010212 a
+ 2008010218 b
+ 2008010300 f
+ 2008010406 e
+ 2008010306 a
+ 2008010312 b
+ 2008010318 f
+ 2008010400 r
+ 2008010412 e", colClasses="character")
> (shorterDD <- DD[ DD[,1] >= "2008010200" & DD[,1] <= "2008010412" , ])
V1 V2
4 2008010206 e
5 2008010200 w
6 2008010212 a
7 2008010218 b
8 2008010300 f
9 2008010406 e
10 2008010306 a
11 2008010312 b
12 2008010318 f
13 2008010400 r
14 2008010412 e
答案 2 :(得分:0)
您可以使用between
来自dplyr
的方便功能。来自@jbaums'帖子的m
library(dplyr)
m[between(m[,"date"], 20080110, 20080120),]
# date
#[1,] 20080110 0.19957458 0.22814565
#[2,] 20080111 0.44428667 0.24073101
#[3,] 20080112 0.86218249 0.68175459
#[4,] 20080113 0.31706619 0.48679117
#[5,] 20080114 0.09629562 0.66931400
#[6,] 20080115 0.81436380 0.35013160
#[7,] 20080116 0.34077661 0.54417985
#[8,] 20080117 0.71414292 0.52569811
#[9,] 20080118 0.84745961 0.90069540
#[10,] 20080119 0.04145519 0.05394461
#[11,] 20080120 0.65274477 0.08029292