Заменить 0/1 столбцов коэффициентами true / false

#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 это просто фиктивные данные.

Если вы хотите определить, какие столбцы соответствуют этому описанию, ответ Ронака Шаха должен сработать.