2012-06-16 18 views
6

üst üste değerlerini karşılaştırarak ve buVeri çerçevesi satırlarda değerleri karşılaştırmak için çalışıyorum

dat[!dat[1]==dat[2]] 

ile eşleşen tüm olanları, çıkarma

> dat 

döner

n1 n2 
n1 n4 
n4 n5 
n1 n3 
n4 n4 

Bu nedenle, her iki sütun aynı verilere sahip olduğundan, değerleri karşılaştırıp son satırı silmesini istiyorum. i Yukarıdaki kodu kullandığınızda Ama, bana

Error in Ops.factor(left, right) : level sets of factors are different 

söyler 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 
+0

Lütfen sorunuzda 'str (dat)' değerini yazınız. Ben 'dat' bir data.frame olduğunu sanıyordum ve siz de, sütunlarınızı karakter vektörlerinden ziyade dolaylı olarak faktörlere dönüştürdünüz. – Andrie

cevap

14

Verilerinizin oluşturulmasından şüpheleniyorum, siz istemeyerek ve dolaylı olarak sütunlarınızı faktörlere dönüştürdünüz. Bu, muhtemelen kaynaktaki verileri okuduğunuzda oldu. read.csv veya read.table kullanırken. Bu örnek bunu göstermektedir:

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 

çare argümanı geçmektir stringsAsFactors=FALSEread.table() için:

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" ... 

Sonra kodu (Ben bir virgül kaçırdığınızı şüpheli hariç) çalışır:

dat[!dat[1]==dat[2], ] 
    V1 V2 
1 n1 n2 
2 n1 n4 
3 n4 n5 
4 n1 n3 
2

bir çözüm veri çerçevesi (stringAsFactors=F kullanarak) faktörler dikkate karakter vektörleri dönüştürmez talimat vermek olacaktır okur:

x <- c('n1', 'n1', 'n4', 'n1', 'n4') 
y <- c('n2', 'n4', 'n5', 'n3', 'n4') 
df <- data.frame(x, y, stringsAsFactors=F) 
df <- df[-which(df$x == df$y), ] 

Veri çerçevesini oluşturduktan sonra, kod eşleşen satırları çıkartarak istediğiniz sonucu üretir.

İlgili konular