У меня есть набор данных, который содержит двоичные, категориальные столбцы, но закодированные как скрытые числовые и непрерывные функции. Я пытаюсь создать функцию, которая обнаруживает индексы столбцов, которые не содержат числовых значений.Как определить двоичные и категориальные столбцы, закодированные как дискретные числовые значения в r
Пример набора данных приведен ниже:
data <- data.frame(var1=c(rep(1,5),rep(0,5)),var2=c(rep(0,2),rep(1,8)),
var3=c(1,2,3,4,4,2,3,1,1,2), var4=rnorm(10),
var5=as.numeric(c(rnorm(6),rep("NA",4))))
var1 var2 var3 var4 var5
1 1 0 1 0.7312777 -1.3902633
2 1 0 2 0.5120417 -1.2470914
3 1 1 3 1.6502341 -0.9980822
4 1 1 4 0.4298987 0.7766762
5 1 1 4 -0.8025510 -0.5221676
6 0 1 2 0.2001818 -1.2300872
7 0 1 3 -0.5521180 NA
8 0 1 1 -1.7895327 NA
9 0 1 1 -0.5309557 NA
10 0 1 2 -1.7362210 NA
Я попытался следующие функции до сих пор:
is.binary <- function(v) {
x <- unique(v)
length(x) - sum(is.na(x)) == 2L && all(x[1:2] == 0:1)
}
Эта функция не обнаруживает столбцы, которые имеют только два значения (1,0), даже если они содержат «NA», но эта функция не распознает двоичные или категориальные столбцы правильно. когда я запускал функцию, используя команду:
vapply(data, is.binary, logical(1))
результат был
var1 var2 var3 var4 var5
FALSE TRUE FALSE FALSE FALSE
В то время как я ищу для того, чтобы определить первые 3 колонки в виде двоичного/категоричен каким-то образом.
первых, наконечник : просто используйте 'var5 = c (rnorm (6), rep (NA, 4)))' – MichaelChirico
Я сделал, и он работал на var5 правильно, поскольку он идентифицировал var5 как не двоичный столбец. – syebill
Если я использую is.binary <- function (v) { x <- unique (v) length (x) - sum (is.na (x)) == 2L }, Затем он корректно определяет двоичные столбцы , Как его можно изменить, чтобы определить третий столбец как двоичный? Кроме того, если в двоичном столбце отсутствуют значения, то эта функция не определяет его как двоичный. – syebill