Bir data.frame dosyasında ikili sütunları tanımlamak istiyorum. Örneğinİkili sütunları tanımlayın
,
my.table <-read.table(text="a,b,c
0,2,0
0.25,1,1
1,0,0", header=TRUE, as.is=TRUE,sep = ",")
verecekti bu tablo FALSE, FALSE, TRUE
Bir data.frame dosyasında ikili sütunları tanımlamak istiyorum. Örneğinİkili sütunları tanımlayın
,
my.table <-read.table(text="a,b,c
0,2,0
0.25,1,1
1,0,0", header=TRUE, as.is=TRUE,sep = ",")
verecekti bu tablo FALSE, FALSE, TRUE
apply(my.table,2,function(x) { all(x %in% 0:1) })
(veya
apply(my.table,2,function(x) { all(na.omit(x) %in% 0:1) })
Eğer NA
değerler için izin vermek istiyorsanız)
Eğer onları NA ile ikili sütunlar kabul etmek istiyorsanız, aşağıdaki yöntemi olmalıdır:
is.binary <- function(v) {
x <- unique(v)
length(x) - sum(is.na(x)) == 2L
}
my.table <- data.frame(a=11:15, b=c(T,F,T,NA,T), c=c('foo',NA,'bar','bar','foo'))
vapply(my.table, is.binary, logical(1))
# a b c
#FALSE TRUE TRUE
... yoksa sadece 0,1, kabul ederseniz NA:
is.binary <- function(v) {
x <- unique(v)
length(x) - sum(is.na(x)) == 2L && all(x[1:2] == 0:1)
}
yukarıdaki yorumuma bakın - sanırım 'binary' uzunluğunu '(benzersiz (x)) == 2'ye göre tehlikeli olabilir. .. –
... O yüzden sadece 0/1/NA kabul eden başka bir versiyon ekledim – Tommy
Tamam, üzgünüm, bunu kaçırdım. –
Ben deneyebilir işlev (x) uzunluğu (benzersiz (x))> 2 olan 0,1'den farklı düzeylerde ikili değişkenleri yakalar. olabilir? – Seth
Ve hepsi 0,1 ile kodlanmamışsa, uzunluk (benzersiz (x) 'yi sadece iki değer için kontrol edebilirsiniz. – joran
@Seth, @Joran, bunlar güzel fikirler, ama tablonuzun matrisi ise (c) (0,1,0,1,1,2), nrow = 3) 'ikinci sütunun ikili olarak algılanmasını ister misiniz? Biraz daha dikkatli olmanız gerekir. "binary" yi tanımlarsınız. –