comparing values in a row
dataframe, r
Solution
I suspect in the creation of your data, you inadvertently and implicitly converted your columns to factors. This possibly happened when you read the data from source, e.g. when using `read.csv` or `read.table`. This example illustrates it:
dat <- read.table(text="
n1 n2
n1 n4
n4 n5
n1 n3
n4 n4")
str(dat)
'data.frame': 5 obs. of 2 variables:
$ V1: Factor w/ 2 levels "n1","n4": 1 1 2 1 2
$ V2: Factor w/ 4 levels "n2","n3","n4",..: 1 3 4 2 3
The remedy is to pass the argument `stringsAsFactors=FALSE` to `read.table()`:
dat <- read.table(text="
n1 n2
n1 n4
n4 n5
n1 n3
n4 n4", stringsAsFactors=FALSE)
str(dat)
'data.frame': 5 obs. of 2 variables:
$ V1: chr "n1" "n1" "n4" "n1" ...
$ V2: chr "n2" "n4" "n5" "n3" ...
Then your code works (except that I suspect you've missed a comma):
dat[!dat[1]==dat[2], ]
V1 V2
1 n1 n2
2 n1 n4
3 n4 n5
4 n1 n3
Problem
I am trying to compare values on data frame rows, and removing all the ones that match, with this ``` dat[!dat[1]==dat[2]] ``` where ``` > dat ``` returns ``` n1 n2 n1 n4 n4 n5 n1 n3 n4 n4 ``` So i want it to compare the values and delete the last row, since both columns have the same data. But when i use the above code, it tells me ``` Error in Ops.factor(left, right) : level sets of factors are different ``` the `str(dat)` reads ``` 'data.frame': 5 obs. of 2 variables: $ V1: Factor w/ 2 levels "n1","n4": 1 1 2 1 2 $ V2: Factor w/ 4 levels "n2","n3","n4",..: 1 3 4 2 3 ```