проверить, все ли значения в столбцах data.frame являются целыми числами для подмножества фиктивных переменных, иначе все значения в столбце TRUE? - PullRequest
0 голосов
/ 05 марта 2020

Хотелось бы узнать, есть ли более простой способ подстановки целочисленных столбцов data.frame.

Моя цель - изменить числовые столбцы в моем data.frame, не касаясь чисто целочисленных столбцов (в моем случае, содержащих 0 или 1). Целочисленные столбцы изначально были факторными уровнями, превращенными в фиктивные переменные, и должны оставаться такими, какие они есть. Поэтому я хочу временно удалить их.

Чтобы отличить числовые значения guish от целочисленных столбцов, я использовал отсюда версию OP ( Проверьте, является ли число целым ).

Но is.wholenumber возвращает матрицу ИСТИНА / ЛОЖЬ вместо одного значения на столбец, например is.numeric, поэтому sapply(mtcars, is.wholenumber) мне не помогает. Я придумал следующее решение, но подумал, что должен быть более простой способ?

data(mtcars)
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5)  abs(x - round(x)) < tol
integer_column_names <-  apply(is.wholenumber(mtcars), 2, mean) == 1
numeric_df <- mtcars[, !integer_column_names]

1 Ответ

1 голос
/ 05 марта 2020

Вы можете использовать dplyr для достижения этого, как показано здесь

library(dplyr)

is_whole <- function(x) all(floor(x) == x)

df = select_if(mtcars, is_whole)

или в базе R

df = mtcars[ ,sapply(mtcars, is_whole)]
...