On 05/02/2010 08:26 PM, peterko wrote:

Hi, my data looks this:
   id       forma     program   kod                         obor
rocnik
1 10001 kombinovaná  Matematika M1101                   matematika      1
2 10002   prezenční Informatika N1801       teoretická informatika      1
3 10002   prezenční Informatika B1801           obecná informatika      3
4 10003   prezenční Informatika M1801           softwarové systémy      5
5 10004   prezenční Informatika B1801           obecná informatika      2
6 10005 kombinovaná Informatika P1801 diskrétní modely a algoritmy      2
         stav     ukrok
1   zanechal 2002/2003
2    studuje
3 absolvoval 2008/2009
4 absolvoval 2005/2006
5   zanechal 2007/2008
6   zanechal 2004/2005

data$ukrok is a factor
data$rocnik is numeric

I want to create new column (data$z) and in this column have to be
as.numeric(first 4 char of column(data$ukrok))-data$rocnik   ---- by the
rows
If ukrok is empty it means 2009.
I know how to do it by cycle FOR , but this is not rigth way. I have too
many observation, and this way is soo slowly.
Know someone how to do it using function TAPPLY ? or another apply function
???
Hi Peterko,
You can do this with vector calculation like this:

# make sure that ukrok is character, not factor
data$ukrok<-as.character(data$ukrok)
# set the empty elements to the correct value
data$ukrok[nchar(data$ukrok)==0]<-"2009/2009"
# split ukrok, unlist it, take only the first component
# convert to numeric and subtract rocnik
data$z<-as.numeric(matrix(unlist(strsplit(data$ukrok,"\")),
 ncol=2,byrow=TRUE)[,1])-data$rocnik

Jim

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to