Search code examples
rcsvreplaceweka

Replace numbers with Boolean in r


I want to use weka to predict future instances. I have a csv file and a small portion of it is as following:

enter image description here

I used r to read the file but I am not sure how to substitute the zeros with "No error" and anything besides zero to "Error". I would have left like this but unfortunately weka is not able to predict instances with numbers as the status.

Edit 2: I tried your solution and even though it changed the numbbers to error/no error, it erased the other columns. Did I do something wrong? I also wrote it to a file so it would be easier to see.

Output File

Edit 3:

dput(data)
structure(list(BoxType = structure(c(3L, 3L, 6L, 6L, 3L, 8L, 
3L, 3L, 6L, 4L, 4L, 3L, 3L, 4L, 6L, 6L, 3L, 6L, 2L, 4L, 3L, 3L, 
8L, 3L, 6L, 8L, 2L, 3L, 8L, 8L, 3L, 8L, 2L, 2L, 8L, 8L, 2L, 3L, 
8L, 3L, 4L, 3L, 3L, 3L, 2L, 2L, 6L, 4L, 3L, 4L, 4L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 3L, 4L, 2L, 6L, 6L, 4L, 4L, 4L, 6L, 3L, 4L, 6L, 3L, 
3L, 2L, 2L, 6L, 3L, 3L, 3L, 2L, 6L, 8L, 3L, 8L, 3L, 4L, 3L, 8L, 
6L, 2L, 6L, 6L, 3L, 3L, 4L, 3L, 4L, 4L, 2L, 4L, 2L, 3L, 2L, 6L, 
3L, 3L, 4L, 3L, 3L, 6L, 3L, 6L, 3L, 3L, 4L, 6L, 4L, 4L, 3L, 4L, 
4L, 2L, 6L, 2L, 6L, 6L, 3L, 3L, 4L, 3L, 4L, 6L, 3L, 4L, 6L, 6L, 
4L, 4L, 3L, 6L, 4L, 4L, 3L, 4L, 6L, 3L, 6L, 2L, 3L, 2L, 2L, 6L, 
4L, 4L, 3L, 6L, 4L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 2L, 6L, 6L, 
6L, 3L, 2L, 3L, 3L, 4L, 4L, 3L, 6L, 3L, 4L, 3L, 3L, 3L, 3L, 8L, 
6L, 3L, 6L, 2L, 8L, 2L, 3L, 3L, 6L, 3L, 2L, 2L, 3L, 4L, 6L, 2L, 
6L, 3L, 3L, 4L, 6L, 3L, 4L, 4L, 4L, 2L, 4L, 3L, 6L, 3L, 3L, 3L, 
4L, 3L, 3L, 2L, 4L, 3L, 3L, 3L, 2L, 3L, 4L, 6L, 3L, 3L, 3L, 2L, 
3L, 6L, 3L, 3L, 3L, 3L, 3L, 6L, 8L, 4L, 3L, 3L, 2L, 7L, 8L, 6L, 
6L, 4L, 6L, 8L, 3L, 2L, 4L, 4L, 6L, 3L, 2L, 6L, 8L, 4L, 6L, 4L, 
4L, 4L, 3L, 3L, 3L, 6L, 4L, 4L, 3L, 3L, 3L, 6L, 6L, 3L, 6L, 6L, 
6L, 4L, 4L, 3L, 2L, 4L, 3L, 6L, 3L, 4L, 4L, 4L, 4L, 2L, 2L, 3L, 
4L, 4L, 3L, 3L, 3L, 3L, 4L, 3L, 6L, 3L, 6L, 6L, 4L, 4L, 2L, 3L, 
4L, 4L, 4L, 6L, 6L, 4L, 4L, 4L, 4L, 2L, 3L, 4L, 4L, 3L, 4L, 4L, 
4L, 3L, 6L, 3L, 6L, 3L, 6L, 3L, 6L, 6L, 3L, 3L, 3L, 3L, 3L, 6L, 
6L, 3L, 6L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 6L, 3L, 
3L, 3L, 2L, 4L, 4L, 3L, 6L, 3L, 2L, 7L, 3L, 3L, 3L, 2L, 3L, 2L, 
3L, 4L, 2L, 2L, 3L, 4L, 3L, 3L, 4L, 1L, 6L, 3L, 2L, 3L, 3L, 7L, 
4L, 4L, 3L, 2L, 4L, 2L, 4L, 3L, 3L, 3L, 3L, 6L, 2L, 4L, 2L, 4L, 
4L, 4L, 3L, 3L, 3L, 6L, 6L, 3L, 7L, 6L, 3L, 3L, 3L, 4L, 4L, 3L, 
6L, 4L, 3L, 7L, 4L, 6L, 6L, 2L, 2L, 4L, 3L, 4L, 4L, 2L, 4L, 4L, 
7L, 3L, 4L, 6L, 4L, 6L, 3L, 2L, 3L, 3L, 4L, 4L, 2L, 4L, 3L, 4L, 
3L, 3L, 4L, 6L, 2L, 2L, 6L, 6L, 6L, 2L, 3L, 4L, 4L, 3L, 8L, 6L, 
4L, 4L, 3L, 3L, 5L, 6L, 2L, 3L, 4L, 8L, 6L, 8L, 4L, 4L, 7L, 4L, 
6L, 8L, 4L, 2L, 6L, 6L, 4L, 4L, 1L, 1L, 1L, 1L, 2L, 3L, 3L, 2L, 
6L, 8L, 4L, 3L, 1L, 6L, 6L, 1L, 1L, 1L, 4L, 4L, 8L, 3L, 3L, 2L, 
2L, 4L, 8L, 6L, 4L, 8L, 3L, 3L, 3L, 5L, 4L, 1L, 2L, 2L, 3L, 4L, 
2L, 5L, 4L, 8L, 3L, 8L, 2L, 3L, 4L, 8L, 3L, 6L, 3L, 6L, 6L, 3L, 
3L, 8L, 8L, 3L, 6L, 3L, 3L, 2L, 5L, 3L, 6L, 3L, 2L, 3L, 3L, 3L, 
4L, 3L, 4L, 3L, 4L, 3L, 2L, 2L, 3L, 6L, 4L, 6L, 3L, 3L, 6L, 3L, 
4L, 3L, 2L, 3L, 4L, 4L, 4L, 6L, 6L, 3L, 6L, 4L, 7L, 8L, 6L, 8L, 
8L, 4L, 6L, 4L, 4L, 3L, 4L, 2L, 3L, 2L, 4L, 6L, 4L, 6L, 4L, 6L, 
4L, 6L, 3L, 4L, 3L, 6L, 4L, 4L, 8L, 4L, 8L, 3L, 3L, 6L, 6L, 3L, 
4L, 3L, 3L, 3L, 3L, 6L, 3L, 3L, 3L, 4L, 2L, 4L, 3L, 3L, 6L, 6L, 
4L, 3L, 2L, 3L, 6L, 4L, 3L, 3L, 2L, 3L, 2L, 6L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 2L, 3L, 3L, 6L, 6L, 2L, 3L, 6L, 3L, 2L, 3L, 6L, 
4L, 3L, 3L, 3L, 6L, 6L, 4L, 3L, 8L, 8L, 4L, 3L, 2L, 2L, 3L, 2L, 
3L, 8L, 2L, 3L, 6L, 3L, 3L, 4L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 8L, 
8L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 2L, 6L, 2L, 3L, 6L, 6L, 8L, 3L, 
4L, 3L, 3L, 6L, 6L, 3L, 3L, 3L, 2L, 6L, 2L, 3L, 6L, 8L, 3L, 4L, 
4L, 6L, 4L, 8L, 4L, 4L, 2L, 6L, 8L, 6L, 4L, 8L, 3L, 8L, 1L, 8L, 
2L, 2L, 2L, 2L, 3L, 3L, 6L, 3L, 3L, 6L, 3L, 3L, 3L, 2L, 3L, 3L, 
3L, 2L, 4L, 3L, 4L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 
3L, 6L, 3L, 3L, 6L, 3L, 2L, 3L, 3L, 3L, 4L, 3L, 3L, 1L, 1L, 1L, 
1L, 3L, 3L, 3L, 3L, 6L, 4L, 3L, 3L, 6L, 3L, 6L, 6L, 4L, 6L, 4L, 
6L, 4L, 4L, 6L, 6L, 6L, 3L, 6L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 
2L, 2L, 8L, 4L, 4L, 6L, 4L, 8L, 6L, 4L, 3L, 4L, 3L, 4L, 6L, 4L, 
6L, 6L, 6L, 4L, 6L, 6L, 4L, 4L, 4L, 2L, 6L, 4L, 2L, 4L, 4L, 3L, 
4L, 6L, 6L, 6L, 3L, 4L, 6L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 
8L, 4L, 4L, 6L, 2L, 8L, 8L, 4L, 6L, 3L, 4L, 8L, 8L, 5L, 3L, 2L, 
4L, 3L, 4L, 6L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 4L, 3L, 
6L, 4L, 6L, 6L, 6L, 2L, 3L, 6L, 6L, 3L, 4L, 3L, 2L, 8L, 4L, 8L, 
8L, 3L, 3L, 4L, 6L, 6L, 4L, 6L, 6L, 3L, 4L, 4L, 4L, 3L, 7L, 4L, 
6L), .Label = c("", "IPH8005", "ISB7005", "VIP1200", "VIP1216", 
"VIP1232", "VIP2262NA", "VIP2502W"), class = "factor"), BoxVendor = structure(c(2L, 
2L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 2L, 
3L, 4L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 4L, 2L, 3L, 3L, 2L, 3L, 4L, 
4L, 3L, 3L, 4L, 2L, 3L, 2L, 3L, 2L, 2L, 2L, 4L, 4L, 3L, 3L, 2L, 
3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 3L, 3L, 3L, 3L, 3L, 
3L, 2L, 3L, 3L, 2L, 2L, 4L, 4L, 3L, 2L, 2L, 2L, 4L, 3L, 3L, 2L, 
3L, 2L, 3L, 2L, 3L, 3L, 4L, 3L, 3L, 2L, 2L, 3L, 2L, 3L, 3L, 4L, 
3L, 4L, 2L, 4L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 3L, 2L, 2L, 3L, 
3L, 3L, 3L, 2L, 3L, 3L, 4L, 3L, 4L, 3L, 3L, 2L, 2L, 3L, 2L, 3L, 
3L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 
4L, 2L, 4L, 4L, 3L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 
2L, 2L, 4L, 3L, 3L, 3L, 2L, 4L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 3L, 
2L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 4L, 3L, 4L, 2L, 2L, 3L, 2L, 4L, 
4L, 2L, 3L, 3L, 4L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 3L, 3L, 4L, 3L, 
2L, 3L, 2L, 2L, 2L, 3L, 2L, 2L, 4L, 3L, 2L, 2L, 2L, 4L, 2L, 3L, 
3L, 2L, 2L, 2L, 4L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 
2L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 4L, 3L, 3L, 3L, 2L, 4L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 
3L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 4L, 3L, 2L, 3L, 2L, 3L, 3L, 
3L, 3L, 4L, 4L, 2L, 3L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 
3L, 3L, 3L, 4L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 2L, 
3L, 3L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 3L, 2L, 
2L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 4L, 
2L, 2L, 2L, 3L, 2L, 2L, 2L, 4L, 3L, 3L, 2L, 3L, 2L, 4L, 3L, 2L, 
2L, 2L, 4L, 2L, 4L, 2L, 3L, 4L, 4L, 2L, 3L, 2L, 2L, 3L, 1L, 3L, 
2L, 4L, 2L, 2L, 3L, 3L, 3L, 2L, 4L, 3L, 4L, 3L, 2L, 2L, 2L, 2L, 
3L, 4L, 3L, 4L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 3L, 2L, 
2L, 2L, 3L, 3L, 2L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 3L, 2L, 
3L, 3L, 4L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 2L, 4L, 2L, 2L, 3L, 
3L, 4L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 4L, 4L, 3L, 3L, 3L, 4L, 2L, 
3L, 3L, 2L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 4L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 
1L, 4L, 2L, 2L, 4L, 3L, 3L, 3L, 2L, 1L, 3L, 3L, 1L, 1L, 1L, 3L, 
3L, 3L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 
1L, 4L, 4L, 2L, 3L, 4L, 3L, 3L, 3L, 2L, 3L, 4L, 2L, 3L, 3L, 2L, 
3L, 2L, 3L, 3L, 2L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 4L, 3L, 2L, 3L, 
2L, 4L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 4L, 4L, 2L, 3L, 3L, 
3L, 2L, 2L, 3L, 2L, 3L, 2L, 4L, 2L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 4L, 2L, 4L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 
2L, 2L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 2L, 3L, 4L, 
3L, 2L, 2L, 3L, 3L, 3L, 2L, 4L, 2L, 3L, 3L, 2L, 2L, 4L, 2L, 4L, 
3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 3L, 3L, 4L, 2L, 
3L, 2L, 4L, 2L, 3L, 3L, 2L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 
2L, 4L, 4L, 2L, 4L, 2L, 3L, 4L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 3L, 
2L, 2L, 2L, 2L, 3L, 3L, 4L, 2L, 2L, 4L, 4L, 2L, 4L, 4L, 3L, 4L, 
2L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 4L, 3L, 4L, 
2L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 
3L, 2L, 3L, 1L, 3L, 4L, 4L, 4L, 4L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 
2L, 2L, 4L, 2L, 2L, 2L, 4L, 3L, 2L, 3L, 4L, 4L, 2L, 2L, 2L, 2L, 
2L, 2L, 4L, 4L, 2L, 2L, 3L, 2L, 2L, 3L, 2L, 4L, 2L, 2L, 2L, 3L, 
2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 3L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 
4L, 2L, 2L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 
3L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 3L, 
3L, 4L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 2L, 2L, 2L, 
2L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 2L, 3L, 
3L, 3L, 3L, 2L, 4L, 3L, 2L, 3L, 3L, 3L, 2L, 3L, 2L, 3L, 3L, 3L, 
2L, 2L, 2L, 3L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 2L, 3L, 3L, 2L, 3L, 
2L, 4L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 3L, 
3L, 3L, 2L, 3L, 3L, 3L), .Label = c("", "CISCO", "MOTOROLA", 
"PACE"), class = "factor"), Receiver_TotalVideoDecoderErrors = c(3L, 
204L, 0L, 0L, 3393L, 909L, 1556L, 48L, 0L, 0L, 0L, 182L, 19L, 
0L, 0L, 0L, 77L, 0L, 0L, 0L, 6L, 1002L, 10L, 0L, 0L, 6938L, 0L, 
299L, 49L, 245L, 0L, 41L, 0L, 0L, 717L, 31L, 0L, 75L, 37L, 71L, 
0L, 40L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 
1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 1230L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 22L, 0L, 0L, 1384L, 95L, 0L, 0L, 
0L, 437L, 119L, 910L, 0L, 0L, 8679L, 20L, 68L, 7L, 0L, 0L, 16L, 
0L, 0L, 0L, 0L, 74L, 1L, 0L, 82L, 0L, 0L, 0L, 0L, 0L, 21L, 0L, 
0L, 279L, 40L, 0L, 1483L, 3L, 0L, 132L, 0L, 0L, 171L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 90L, 0L, 0L, 0L, 0L, 
0L, 111L, 0L, 0L, 0L, 0L, 0L, 18L, 0L, 0L, 0L, 217L, 0L, 0L, 
1687L, 0L, 0L, 25L, 0L, 0L, 0L, 0L, 0L, 60L, 0L, 0L, 7L, 0L, 
0L, 0L, 0L, 1L, 20L, 0L, 0L, 0L, 0L, 0L, 230L, 0L, 169L, 0L, 
0L, 0L, 889L, 0L, 3L, 0L, 48L, 2951L, 10L, 531L, 0L, 0L, 0L, 
0L, 0L, 232L, 0L, 0L, 125L, 0L, 39L, 0L, 0L, 262L, 0L, 0L, 0L, 
0L, 1270L, 6L, 0L, 0L, 88L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 297L, 
124L, 419L, 0L, 483L, 280L, 0L, 0L, 127L, 93L, 368L, 0L, 209571L, 
0L, 0L, 21L, 62L, 11L, 0L, 501L, 0L, 169L, 34L, 32L, 25L, 188L, 
0L, 1596L, 0L, 41L, 183L, 0L, 805L, 3L, 0L, 0L, 0L, 0L, 297L, 
90L, 0L, 0L, 0L, 0L, 691L, 0L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 23L, 
52L, 0L, 0L, 0L, 0L, 58L, 18L, 93L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 9L, 0L, 0L, 11381L, 0L, 34L, 0L, 0L, 26L, 0L, 0L, 0L, 318L, 
0L, 0L, 36L, 0L, 6534L, 22L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 18L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 35L, 0L, 0L, 
30L, 0L, 0L, 0L, 51L, 0L, 7L, 0L, 84L, 0L, 9L, 0L, 0L, 48L, 65L, 
23L, 0L, 60312L, 0L, 0L, 28L, 0L, 32L, 0L, 0L, 283L, 406L, 44L, 
0L, 0L, 0L, 2L, 824L, 0L, 0L, 2487L, 95L, 0L, 0L, 0L, 0L, 0L, 
56L, 0L, 1L, 4640L, 12L, 3626L, 0L, 0L, 0L, 420L, 0L, 0L, 0L, 
49L, 0L, 78L, 8L, 0L, 0L, 0L, 380L, 0L, 0L, 7L, 1194L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 29L, 489L, 584L, 47L, 2L, 0L, 0L, 0L, 0L, 
0L, 0L, 899L, 120L, 0L, 0L, 0L, 26L, 656L, 0L, 0L, 0L, 50L, 0L, 
0L, 0L, 0L, 0L, 6L, 14L, 0L, 0L, 0L, 0L, 0L, 0L, 89L, 0L, 0L, 
0L, 0L, 0L, 104L, 0L, 0L, 0L, 0L, 0L, 217L, 0L, 50L, 14L, 0L, 
0L, 0L, 0L, 21L, 0L, 73L, 403L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
14L, 0L, 0L, 2769L, 5878L, 0L, 0L, 0L, 37L, 0L, 0L, 0L, 0L, 0L, 
0L, 258L, 0L, 5560L, 0L, 0L, 722L, 0L, 0L, 707L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 95L, 0L, 0L, 13L, 0L, 37L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 150L, 65L, 0L, 0L, 0L, 78L, 
0L, 0L, 0L, 4L, 10L, 25L, 0L, 0L, 0L, 0L, 0L, 13L, 0L, 0L, 0L, 
0L, 0L, 47L, 103L, 0L, 9L, 0L, 116L, 27L, 0L, 7L, 0L, 0L, 6L, 
3L, 831L, 1396L, 545L, 0L, 226L, 79L, 0L, 0L, 101L, 0L, 3370L, 
0L, 36L, 98L, 25L, 0L, 290L, 0L, 3L, 0L, 193L, 0L, 0L, 10L, 0L, 
0L, 0L, 188L, 4L, 0L, 3L, 0L, 0L, 0L, 155L, 0L, 0L, 0L, 0L, 0L, 
58L, 0L, 0L, 56L, 0L, 0L, 209L, 60L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 458L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 40L, 0L, 0L, 4L, 1L, 0L, 0L, 5L, 0L, 548L, 123L, 387L, 
723L, 0L, 522L, 384L, 0L, 0L, 0L, 0L, 472L, 1L, 0L, 0L, 0L, 24L, 
0L, 91L, 0L, 0L, 11L, 47L, 0L, 11L, 0L, 0L, 27L, 17L, 156L, 0L, 
29L, 5L, 0L, 0L, 0L, 15L, 79L, 0L, 0L, 0L, 137L, 0L, 75L, 0L, 
0L, 0L, 0L, 0L, 0L, 670L, 0L, 0L, 0L, 17L, 23L, 1L, 0L, 160L, 
0L, 0L, 235L, 0L, 272L, 16L, 0L, 1803L, 0L, 4780L, 26L, 0L, 90L, 
17L, 0L, 1518L, 151L, 1L, 768L, 151L, 42L, 0L, 9161L, 57L, 0L, 
0L, 73L, 0L, 0L, 0L, 0L, 3086L, 0L, 0L, 0L, 1896L, 0L, 240L, 
165L, 0L, 0L, 722L, 282L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 4L, 0L, 
0L, 0L, 0L, 212L, 0L, 0L, 0L, 0L, 285L, 0L, 0L, 9L, 1349L, 1417L, 
30792L, 2163L, 0L, 0L, 0L, 0L, 969L, 0L, 0L, 0L, 8L, 0L, 100L, 
109L, 48L, 0L, 100L, 109L, 48L, 0L, 0L, 61L, 0L, 0L, 0L, 86L, 
967L, 2679L, 86L, 967L, 2679L, 0L, 0L, 0L, 32L, 0L, 0L, 32L, 
0L, 4L, 0L, 0L, 54L, 341L, 0L, 54L, 341L, 0L, 0L, 0L, 0L, 401L, 
83L, 83L, 6L, 0L, 0L, 46L, 442L, 0L, 46L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 245L, 0L, 245L, 599L, 78L, 0L, 58L, 54L, 
0L, 54L, 0L, 0L, 16L, 0L, 0L, 0L, 0L, 30L, 0L, 0L, 305L, 0L, 
305L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 27L, 0L, 0L, 0L, 0L, 536L, 0L, 0L, 0L, 10L, 66L, 
20L, 66L, 899L, 4L, 0L, 0L, 233L, 0L, 0L, 0L, 0L, 233L, 3L, 0L, 
0L, 8L, 0L, 0L, 0L, 0L, 13L, 0L, 0L, 428L, 0L, 0L, 0L, 428L, 
0L, 172L, 0L, 0L, 0L, 12L, 13L, 13L, 0L, 35L, 0L, 0L, 0L, 0L, 
0L, 0L, 49L, 0L, 0L, 0L, 0L, 639L, 0L, 78L, 0L, 4386L, 78L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2076L, 6L, 0L, 0L
)), .Names = c("BoxType", "BoxVendor", "Receiver_TotalVideoDecoderErrors"
), class = "data.frame", row.names = c(NA, -999L))

Solution

  • The ifelse way

    Assuming your CSV has been loaded into a data frame called boxdata with the same column names as in the CSV:

    ifelse(boxdata$Receiver_TotalVideoDecoderErrors, 'Error', 'No error')
    

    Explanation

    The best way to demonstrate ifelse is by example:

    x <- 1:5
    
    x_lessthan_4 <- x < 4
    x_lessthan_4
    # [1]  TRUE  TRUE  TRUE FALSE FALSE
    
    if_lessthan_4 <- -x
    if_lessthan_4
    # [1] -1 -2 -3 -4 -5 
    
    if_notlessthan_4 <- x + 100
    if_notlessthan_4
    # [1] 101 102 103 104 105
    
    ifelse(test = if_notlessthan_4,
           yes = if_lessthan_4,
           no = if_notlessthan_4)
    # [1]  -1  -2  -3 104 105
    

    Hopefully it's clear what this function does. Obviously you don't need to always name the arguments as long as they're in the right order; I'm just doing it here so you can see exactly what's going on.

    However, you'll notice that the expression

    ifelse(boxdata$Receiver_TotalVideoDecoderErrors, 'Error', 'No error')
    

    does not conform to this standard. It works because two things happen "under the hood":

    1. test is "coerced" to logical, so if I pass in something like test = c(1, 3, 0) the value of test will be replaced with as.logical(test), so test = c(1, 3, 0) becomes test = c(TRUE, TRUE, FALSE).
    2. yes and no are "recycled" if they are shorter than test, and truncated if they are longer.

    Recycling is again best demonstrated by example:

    test <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
    yes <- c(1, 2, 3)
    no <- c(99, 100, 101, 102, 103, 104)
    c(length(test), length(yes), length(no))
    # [1] 5 3 6
    ifelse(test, yes, no)
    # [1]   1 100   3   1 103
    

    These things are documented, but they're easy to miss if you're not used to reading the R help files.

    And finally, the help file also says this, which is worth pointing out:

    Missing values in test give missing values in the result.

    This means that ifelse(c(NA, 1, 0, 1), 99, 100) returns c(NA, 99, 100, 99).

    So

    ifelse(boxdata$Receiver_TotalVideoDecoderErrors, 'Error', 'No error')
    

    is equivalent to

    test <- as.logical(boxdata$Receiver_TotalVideoDecoderErrors)
    yes <- rep('Error', length(test))
    no <- rep('No error', length(test))
    ifelse(test, yes, no)
    

    The slick way

    Or let argument recycling to do the work for you. Shorter and more efficient, but maybe less readable to someone who isn't familiar with R:

    c('No error', 'Error')[as.logical(boxdata$Receiver_TotalVideoDecoderErrors) + 1]
    

    or

    c('Error', 'No error')[!as.logical(boxdata$Receiver_TotalVideoDecoderErrors) + 1]
    

    Explanation

    First, the statement

    as.logical(boxdata$Receiver_TotalVideoDecoderErrors) + 1
    

    is equivalent to:

    i <- as.logical(boxdata$Receiver_TotalVideoDecoderErrors)
    i <- as.numeric(i)  # FALSE -> 0, TRUE -> 1
    i <- i + rep(1, length(i))
    

    Finally, recycling is applied to subsetting as well:

    c('No error', 'Error')[c(1, 2, 1, 1, 2)]
    # [1] "No error" "Error"    "No error" "No error" "Error"
    

    So the entire thing is equivalent to:

    i <- as.logical(boxdata$Receiver_TotalVideoDecoderErrors)
    i <- as.numeric(i)
    i <- i + rep(1, length(i))
    c('No error', 'Error')[i]
    

    The long way (suggested here)

    This way doesn't need much explanation. It's a lot more typing but it's easy to read and it's flexible:

    x <- boxdata$Receiver_TotalVideoDecoderErrors
    x[x > 0] <- 'Error'
    x[x == 0] <- 'No error'