我是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) }
} }
答案 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”。
subset_by_date <-
function(date_txt,Data,col="Date") {
if (col %in% colnames(Data))
Data[Data[,col] == date_txt,]
}