Разделите информационный кадр на два на основе чисел c и целочисленного типа в R - PullRequest
1 голос
/ 01 апреля 2020

Я хочу разбить фрейм данных на df1 и df2 в зависимости от типа данных numeric и integer.

. df1 и df2 соответственно будут содержать "bmi", "age", "cal", "pro" и "male", "urban".

sapply(df, class)

Out:

      bmi       age       cal       pro      male 
"numeric" "numeric" "numeric" "numeric" "integer" 
    urban 
"integer" 

str(df)

Out:

'data.frame':   4825 obs. of  6 variables:
 $ bmi  : num  24.7 25.3 22.8 21.7 24.2 ...
 $ age  : num  37.5 36.5 37 36.9 40 ...
 $ cal  : num  6.31 1.84 3.87 2.67 1.59 ...
 $ pro  : num  13.57 13.43 9.57 12.51 11.65 ...
 $ male : int  1 0 1 0 1 0 0 1 1 0 ...
 $ urban: int  1 1 1 1 1 1 1 1 1 1 ...

Как это сделать в R? Спасибо.

Я пытаюсь с unlist(lapply(df, is.numeric)), но это не мешает numeric и integer.

Обновление:

С кодом ниже я получаю кадр данных, но это не подмножество df, другая проблема заключается в interger включенных столбцах:

numeric <- which(sapply(df,is.numeric))
df1 <- as.data.frame(numeric)
print(df1) 

Out:

enter image description here

1 Ответ

0 голосов
/ 01 апреля 2020

Следующий код работает, большое спасибо @ A5C1D2H2I1M1N2O1R2T1 и @Ronak Shah.

out <- split.default(df, sapply(df, class))
names(out) <- paste0('df', seq_along(out))
names(out) 
list2env(out, .GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...