#r
#r
Вопрос:
Я хотел бы программно преобразовать столбцы со значениями 0 или 1 в коэффициенты. Я думал о том, чтобы сделать это, проверив наличие различных значений в каждом столбце, а затем используя as.factor
в случае, если различные значения равны 0 и 1.
Мне интересно, может ли быть более разумный способ сделать это. Я планирую использовать это в функции.
Вместо этого я хотел бы заменить коэффициенты 0/1 на коэффициенты true / false
Это мои данные
credit$int_coded_factor <-
rep(c(0, 1, 1, 1, 0), 100)
Я бы хотел, чтобы результат был равен этому
credit$int_coded_factor <-
rep(FALSE, TRUE, TRUE, TRUE, FALSE, 100)
Мне бы хотелось что-то, что я мог бы применить программно, не зная имени столбца
Комментарии:
1. Было бы полезно, если бы вы добавили пример вместе с ожидаемым результатом.
Ответ №1:
Вы можете попробовать :
library(dplyr)
df1 <- df %>% mutate(across(where(~all(. %in% c(0, 1))), factor))
#Using `mutate_if` :
#df1 <- df %>% mutate_if(~all(. %in% c(0, 1)), factor)
str(df1)
#'data.frame': 6 obs. of 3 variables:
# $ a: int 0 1 2 3 4 5
# $ b: Factor w/ 2 levels "0","1": 2 1 1 2 1 2
# $ c: chr "a" "b" "c" "d" ...
данные
df <- data.frame(a = 0:5, b = c(1, 0, 0, 1, 0, 1), c = letters[1:6])
str(df)
#'data.frame': 6 obs. of 3 variables:
# $ a: int 0 1 2 3 4 5
# $ b: num 1 0 0 1 0 1
# $ c: chr "a" "b" "c" "d" ...
Комментарии:
1. Можем ли мы заменить эти типы факторов на TRUE / FALSE?
2. Это было очень полезно! Я обновил свой вопрос, потому что этот ответ помог прояснить мои мысли
3. Вы можете
df %>% mutate(across(where(~all(. %in% c(0, 1))), factor, labels = c(FALSE, TRUE)))
заменить 1/0 наTRUE
/FALSE
4. Потрясающе! Это здорово
Ответ №2:
Я не уверен, что понимаю, о чем вы спрашиваете. Если у вас просто есть фрейм данных с определенными столбцами, которые вы хотите превратить в факторы, это должно сработать:
num <- floor(runif(10000, max = 2))
fact <- as.factor(num)
Обратите внимание, что num
это просто фиктивные данные.
Если вы хотите определить, какие столбцы соответствуют этому описанию, ответ Ронака Шаха должен сработать.