I have a dataset (etter.art) from a test where i compare two apps. I have written a script to correct it where the correct answers becomes a 1, and the wrong answer becomes a 0.
etter.art <- read.csv("etter_artsnavn.csv", header = TRUE, sep = ";")
str(etter.art)
'data.frame': 12 obs. of 13 variables:
$ nummer : int 1 2 3 4 5 6 7 8 9 10 ...
$ app : chr "app1" "app2" "app2" "app2" ...
$ kunne_arter : int 3 4 3 5 2 6 3 3 4 4 ...
$ bloskjell : chr "Blåskjell" "blåskjell" "blåskjell" "blåskjell" ...
$ kamskjell : chr "knivskjell" "kamskjell" "kamskjell" "kamskjell" ...
$ haneskjell : chr "haneskjell" "haneskjell" "knivskjell" "knivskjell" ...
$ purpursnegel: chr "?" "snegleskall" "vet ikke" "kongkylie" ...
$ strandkrabbe: chr "tangkrabbe" "krabbe" "vet ikke" "krabbe" ...
$ sagtang : chr "?" "tang" "vet ikke" "tang" ...
$ sauetang : chr "sauetang" "grisetang" "spiraltang" "grisetang" ...
$ sol : chr "?" "blæretang" "vet ikke" "tare" ...
$ bleretang : chr "spiraltang" "spiraltang" "sauetang" "bleretang" ...
$ grisetang : chr "grisetang" "sauetang" "grisetang" "sauetang" ...
etter.art$bloskjell = ifelse(etter.art$bloskjell=="Blåskjell",1,
ifelse(etter.art$bloskjell=="blåskjell",1,0))
etter.art$kamskjell = ifelse(etter.art$kamskjell=="Kamskjell",1,
ifelse(etter.art$kamskjell=="kamskjell",1,0))
etter.art$haneskjell = ifelse(etter.art$haneskjell=="Haneskjell",1,
ifelse(etter.art$haneskjell=="haneskjell",1,0))
etter.art$purpursnegel = ifelse(etter.art$purpursnegel=="Purpursnegel",1,
ifelse(etter.art$purpursnegel=="purpursnegel",1,0))
etter.art$sagtang = ifelse(etter.art$sagtang=="Sagtang",1,
ifelse(etter.art$sagtang=="sagtang",1,0))
etter.art$strandkrabbe = ifelse(etter.art$strandkrabbe=="Strandkrabbe",1,
ifelse(etter.art$strandkrabbe=="strandkrabbe",1,0))
etter.art$sauetang = ifelse(etter.art$sauetang=="Sauetang",1,
ifelse(etter.art$sauetang=="sauetang",1,0))
etter.art$sol = ifelse(etter.art$sol=="Søl",1,
ifelse(etter.art$sol=="søl",1,0))
etter.art$bleretang = ifelse(etter.art$bleretang=="Bleretang",1,
ifelse(etter.art$bleretang=="bleretang",1,0))
etter.art$grisetang = ifelse(etter.art$grisetang=="Grisetang",1,
ifelse(etter.art$grisetang=="grisetang",1,0))
etter.art$resultat <- rowSums(etter.art[-(1:3)])
However I will have multiple tests and want to write this as a function so that I don't have write all of that for every version of my test.
rett.test <- function(i){
i$bloskjell = ifelse(i$bloskjell=="Blåskjell",1,
ifelse(i$bloskjell=="blåskjell",1,0))
i$kamskjell = ifelse(i$kamskjell=="Kamskjell",1,
ifelse(i$kamskjell=="kamskjell",1,0))
i$haneskjell = ifelse(i$haneskjell=="Haneskjell",1,
ifelse(i$haneskjell=="haneskjell",1,0))
i$purpursnegel = ifelse(i$purpursnegel=="Purpursnegel",1,
ifelse(i$purpursnegel=="purpursnegel",1,0))
i$sagtang = ifelse(i$sagtang=="Sagtang",1,
ifelse(i$sagtang=="sagtang",1,0))
i$strandkrabbe = ifelse(i$strandkrabbe=="Strandkrabbe",1,
ifelse(i$strandkrabbe=="strandkrabbe",1,0))
i$sauetang = ifelse(i$sauetang=="Sauetang",1,
ifelse(i$sauetang=="sauetang",1,0))
i$sol = ifelse(i$sol=="Søl",1,
ifelse(i$sol=="søl",1,0))
i$bleretang = ifelse(i$bleretang=="Bleretang",1,
ifelse(i$bleretang=="bleretang",1,0))
i$grisetang = ifelse(i$grisetang=="Grisetang",1,
ifelse(i$grisetang=="grisetang",1,0))
i$resultat <- rowSums(i[-(1:3)])
i
}
This only prints my result, I want to change my input like the version without the function. Basically I want to send my etter.art with text into the function and get an etter.art that has numbers.
I have tried using apply(etter.art, MARGIN=c(1,2), FUN = rett.test), but then I just get an error saying $ operator is invalid for atomic vectors
I probably did some basic mistake some place, and I'm to new to R to see it.