2015-12-09 92 views
-4

我在R中很新。我有一个名为'dati'的数据框,有2列...第1列“日期”(是日期值),第二个是“值”(浮点值)。 “DATI”收集7809元,和“日期”值从1995年到2015年R从数据帧筛选获得子集年份日期值

如果我打印“DATI”是一样的东西:

 "Date"  "Values" 
1  1995-01-01 7.987 
2  1995-01-02 7.944 
3  1995-01-03 7.901 
    ... 
313 1995-12-29 5.187 
    ... 
3033 2006-06-13 6.567 
3034 2006-06-14 6.588 
... 
7809 2015-12-31 6.998 

我想获得一个包含一个子集只有通过过滤的日期值的元素:我需要在我的子集,收集所有在那里一年等于“1995”的记录......是这样的:

 "Date"  "Values" 
1  1995-01-01 7.987 
2  1995-01-02 7.944 
3  1995-01-03 7.901 
    ... 
313 1995-12-29 5.187 

而且,你能提供给我一个for循环你在哪里增加日期过滤值? 例如,一个for可以创建3个循环...在第一个循环的过滤年份日期值是'1995',在1996年的第二个'1997'和第三个'1997'。

请注意,在这两种情况下,子集都必须同时包含列值(日期和数字)。

感谢

+0

请提供[重复的例子(HTTP: //stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610) – Jaap

+0

好的,完成了。谢谢 – baru

+0

为什么你想创建所有这些子集?有更好的方法来'按某种东西分割数据并对每个部分做一些事情',而不是单独创建所有子集。 – Heroka

回答

1

我们可以尝试subset

subset(dati, format(as.Date(Date),"%Y")==2005) 

如果我们试图集中每一个年度数据,尽量split

split(dati, format(as.Date(dati$Date), "%Y"))