根据R中的Date选择一行矩阵

时间:2015-06-13 12:04:53

标签: r function select

我是R.的新人。我有一个小问题。我想根据日期选择一行。我写了一个函数,但它不起作用。这是我的榜样。

这是我的数据样本:

 Example 
    Date A B 
  1 01/01/2000 0.6765442 1 
  2 01/01/2001 0.1374231 10 
  3 01/01/2002 0.6917205 0 
  4 01/01/2003 0.1440152 5 
  5 01/01/2004 0.1143759 8 
  6 01/01/2005 0.3379550 7 
  7 01/01/2006 0.4477631 9 
  8 01/01/2007 0.6164849 6 
  9 01/01/2008 0.1232872 8 
 10 01/01/2009 0.3511471 6 

我尝试使用此代码:

 test=function(Data,text)  { 
         for ( i in (1:col(Data))) 
              { 
              if (Data[i,1]=="text") 
                 { L=i 
                   R1=Data[L,] 
                   return(R1)  } 
                  }  } 

1 个答案:

答案 0 :(得分:2)

您应该使用 R-vectorized 功能来分组数据。这里不需要使用 for-loop 。例如:

Data[Data$Date == "01/01/2001",]
##         Date         A  B
## 2 01/01/2001 0.1374231 10

当然你可以将它包装在一个函数中:

subset_by_date <-
   function(date_txt,Data)  Data[Data$Date == date_txt,]

PS:在你的功能中你有一个拼写错误,你应该使用text参数而不是“text”。

更新以检查过滤前的data.frame中是否为col

subset_by_date <-
   function(date_txt,Data,col="Date") {
          if (col  %in% colnames(Data))
             Data[Data[,col] == date_txt,]
   }