Here is my script incl. input data:
#set working directory:
setwd("K:/R")
#read in data:
input<-read.table("Exampleinput.txt", sep="\t", header=TRUE)
#check data:
input
Ind M1 M2 M3
1 1 96/98 120/120 0/0
2 2 102/108 120/124 305/305
3 3 96/108 120/120 0/0
4 4 0/0 116/120 300/305
5 5 96/108 120/130 300/305
6 6 98/98 116/120 300/305
7 7 98/108 120/120 305/305
8 8 98/108 120/120 305/305
9 9 98/102 120/124 300/300
10 10 108/108 120/120 305/305
'data.frame': 10 obs. of 4 variables:
$ Ind: int 1 2 3 4 5 6 7 8 9 10
$ M1 : Factor w/ 8 levels "0/0","102/108",..: 5 2 4 1 4 8 7 7 6 3 $
M2 : Factor w/ 4 levels "116/120","120/120",..: 2 3 2 1 4 1 2 2 3 2 $
M3 : Factor w/ 4 levels "0/0","300/300",..: 1 4 1 3 3 3 4 4 2 4
#replace 0/0 by 999/999:
for (r in 1:10)
+ for (c in 2:4)
+ if (input[r,c]=="0/0") input[r,c]<-"999/999"
Warnmeldungen:
1: In `[<-.factor`(`*tmp*`, iseq, value = "999/999") :
invalid factor level, NAs generated
2: In `[<-.factor`(`*tmp*`, iseq, value = "999/999") :
invalid factor level, NAs generated
3: In `[<-.factor`(`*tmp*`, iseq, value = "999/999") :
invalid factor level, NAs generated
Ind M1 M2 M3
1 1 96/98 120/120 <NA>
2 2 102/108 120/124 305/305
3 3 96/108 120/120 <NA>
4 4 <NA> 116/120 300/305
5 5 96/108 120/130 300/305
6 6 98/98 116/120 300/305
7 7 98/108 120/120 305/305
8 8 98/108 120/120 305/305
9 9 98/102 120/124 300/300
10 10 108/108 120/120 305/305
I want to replace all "0/0" by "999/999". My code should work for
columns of type "character" and "integer". But to make it work for a
"factor"-column I would need to add the new level of "999/999" at
first, I guess. How do I add a new level?
--
View this message in context: http://r.789695.n4.nabble.com/Changing-
entries-of-column-of-type-factor-Adding-a-new-level-to-a-factor-
tp4641402.html
Sent from the R help mailing list archive at Nabble.com.