表中提取数据后的日期(年)

29日视图(30天)
美好的一天,
我有一个三列的表,操纵我多年后dd / mm / yyyy yyyy。现在我必须过滤此表作为过滤变量使用一年。
日期从1900年开始,在2050年结束,我需要从1956年到2020年的时间间隔。
我已经创建了一个逻辑向量使用
yearFiltered = newDataFiltered.yearFiltered (newDataFiltered。yearFiltered > 1955 & newDataFiltered.yearFiltered < 2021)
然后我试着指数的主要数据集使用上面的变量后,(B) = []
语法的结果是,“ 当删除元素从一个表变量使用索引作业,不得更改的行数。第一个下标指定为一个冒号(:)和其他一个下标,不是一个冒号”
事实上的行数会减少。

接受的答案

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2022年11月18日
你的表有三列。删除代码必须删除所有3列。您指定的所有列通过添加冒号在第二位置。
:A (B) = []
% ^ ^ colun添加到第二个索引位置
2的评论
克里斯·拉皮埃尔
克里斯·拉皮埃尔 2022年11月18日
使用一个逻辑表达式来识别范围内的行几年你想要的,然后提取那些行,所有列到一个新变量或删除所有其他行,所有列的不是你的逻辑表达式。
= ((1:3;4:6))”
一个= 3×2
1 4 2 5 3 6
idx = (: 1) = = 2
idx =3×1逻辑数组
0 1 0
%提取行
b = (idx:)
b = 1×2
2个5
%删除其他行
(~ idx:) = []
一个= 1×2
2个5

登录置评。

答案(1)

剪秋罗属植物龙
剪秋罗属植物龙 2022年11月18日
编辑:剪秋罗属植物龙 2022年11月21日
我将使用 时间表 对于这种操作。它是专为基于时间的工作流。
%模拟数据1900 - 2050之间的时间
dt = datetime(1900年,1,1)+ calmonths (1:12 * 150)”;
data =(1:长度(dt)) ';
%的时间表自动拿起一个datetime变量向量作为你的时间
tt =时间表(dt,数据)
tt =1800×1的时间表
dt 数据 ___________ ____ 01 - 2月- 1900101 - 3月- 1900201 - 4月- 190031900年5月- 01 -401 - jun - 1900501 - 7 - 1900601 - 8月- 1900701 - 9 - 1900801 - 10月- 1900901 - 11月- 19001001 - 12月- 19001101 - 1月- 19011201 - 2月- 19011301 - 3月- 19011401 - 4月- 1901151901年5月- 01 -16
然后使用 timerange 选择你感兴趣的数据
% 1956 - 2020年timerange下标
tr = timerange (datetime (1956、1、1), datetime (2020、12、31))
tr =
时间表timerange下标:选择时间表行次半开区间:[01 - 1月- 1956就是,31 - 12月- 2020就是)选择在时间表
%得到这个范围内的所有行
:tt (tr)
ans =780×1的时间表
dt 数据 ___________ ____ 01 - 1月- 1956672年01 - 2月- 1956673年01 - 3月- 1956674年01 - 4月- 1956675年1956年5月- 01 -676年01 - jun - 1956677年01 - 7 - 1956678年01 - 8月- 1956679年01 - 9 - 1956680年01 - 10月- 1956681年01 - 11月- 1956682年01 - 12月- 1956683年01 - 1月- 1957684年01 - 2月- 1957685年01 - 3月- 1957686年01 - 4月- 1957687年

下载188bet金宝搏


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!