 
 

Rahul Agarwal 
Analyst 
Equities Quantitative Research 
UBS_ISC, Hyderabad 
On Net: 19 533 6363 



 

 hi let me explain you the problem
we have a database which is in this format


Stocks	 30-Jan-08	 28-Feb-08	 31-Mar-08	 30-Apr-08	
a	 1.00	 3.00	 7.00	 3.00	
b	 2.00	 4.00	 4.00	 7.00	
c	 3.00	 8.00	 655.00	 3.00	
d	 4.00	 23.00	 4.00	 5.00	
e	 5.00	 78.00	 6.00	 5.00	

 and we have a query which is in this format
 
Identifier	 weight	 Start_Date	 End_Date	
a	 6.76	 31-Jan-06	 31-Jan-07	
e	 2.86	 28-Feb-06	 28-Feb-07	
f	 22.94	 31-Mar-06	 30-Mar-07	
y	 30.05	 28-Apr-06	 30-Apr-07	
h	 20.55	 31-May-06	 31-May-07	
d	 6.76	  	  	
f	 2.86	  	  	
r	 22.94	  	  	
  okay now my task is to calculate returns for all the indentifiers for
a respective start and end date from table 1.
 
now length of start date and end date column is same and that of weight
and identifier is same.
i hope everything is clear now.
 
let me also send you the code that i have written but in my code i have
problem with the date format and also with the stocks name
 
data=read.table("H:/Rahul/london/david/rexcel/price.txt")
query=read.table("H:/Rahul/london/david/rexcel/prac.txt",header=TRUE)
 
data=as.matrix(data)
instrument=data[,1]
date=data[1,]
 
query=as.matrix(query)
q_ins=query[,1]
wt=query[,2]
q_sd=query[,3]
q_ed=query[,4]
 
returns=function(I,SD,ED){
      p=rep(0,2)
      for(i in 2:length(instrument))
      {
            if(instrument[i]==I)
            {
                  for(j in 2:length(date))
                  {
                        if(date[j]==SD)
                        p[1]=data[i,j]
                  }
                  for(j in 2:length(date))
                  {
                        if(date[j]==ED)
                        p[2]=data[i,j]
                  }
            }
            returns=(p[2]/p[1])-1
      }
#print(p)
#print(I)
return(returns)
}
 
##The original Funda##
 
matrix_ret=matrix(0,length(q_ins),length(q_sd))
 
for(i in 1:length(q_sd))
{
 for(j in 1:length(q_ins))
 {
  matrix_ret[j,i]=returns(q_ins[j],q_sd[i],q_ed[i])
 }
}
 
#Removing NA from the matrix
 
matrix_ret1=sapply(X=matrix_ret, FUN=function(x)
ifelse(is.na(x),0.00,x))
matrix_ret=matrix(matrix_ret1,length(q_ins),length(q_sd))
 

wt_ret=matrix(0,length(q_sd),1)
for(i in 1:length(q_sd))
{
 for(j in 1:length(q_ins))
 {
  wt_ret[i]=wt_ret[i]+(wt[j]*matrix_ret[j,i])
 }
}
 
result=cbind(q_ed,wt_ret)

  
Rahul Agarwal
Analyst
Equities Quantitative Research
UBS_ISC, Hyderabad
On Net: 19 533 6363




-----Original Message-----
From: Gustaf Rydevik [mailto:gustaf.rydevik@gmail.com
<mailto:gustaf.rydevik@gmail.com> ]
Sent: Tuesday, October 07, 2008 2:19 PM
To: Agarwal, Rahul-A
Cc: R-SIG-robust@r-project.org; r-help@r-project.org
Subject: Re: [R] Reading Data

On Tue, Oct 7, 2008 at 10:36 AM,  <Rahul-A.Agarwal@ubs.com> wrote:
>
> Hi,
> I have a data in which the first row is in date format and the first
> column is in text format and rest all the entries are numeric.
> Whenever I am trying to read the data using read.table, the whole of
> my data is converted in to the text format.
>
> Please suggest what shall I do because using the numeric data which
> are prices I need to calculate the return but if these prices are not
> numeric then calculating return will be a problem
>
> regards
>
> Rahul Agarwal
> Analyst
> Equities Quantitative Research
> UBS_ISC, Hyderabad
> On Net: 19 533 6363
>

Hi,

A single column in a data frame can't contain mixed formats.
In the absence of example data,  would guess one of the following could
work :

1)
read.table("data.txt",skip=1, header=T) ## If you have headers

2)
read.table("data.txt", header=T) ## If the date row is supposed to be
variable names.

3)
 read.table("data.txt",skip=1) ## If there are no headers, and you want
to ignore the date


regards,

Gustaf

--
Gustaf Rydevik, M.Sci.
tel: +46(0)703 051 451
address:Essingetorget 40,112 66 Stockholm, SE skype:gustaf_rydevik


	[[alternative HTML version deleted]]

