Возвращающие факторы при применении функции для преобразования целого числа данных в десятичное - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь преобразовать столбец целых чисел в десятичное:

CI

14   15  16
17   18  19
20   21  22
CI_decimal<-as.data.frame(apply(CI, 2, function(x) format(x, nsmall=3)))

При применении этого я получаю:

14.000  15.000  16.000
17.000  18.000  19.000
20.000  21.000  22.000

Проблема в том, что теперь эти значения были преобразованы в факторы.

Если я преобразую каждый столбец в число c снова as.numeric(), то получу снова целые числа, а не десятичные дроби.

Как я могу решить это?

1 Ответ

3 голосов
/ 23 апреля 2020

Вместо apply мы можем использовать lapply и присвоить его исходному набору данных

CI[] <- lapply(CI, format, nsmall = 2)

Или другой вариант dplyr

library(dplyr)
CI_NEW <- CI %>%
               mutate_all(format, nsmall = 2)

Проблема в том, что apply возвращает вывод character, а as.data.frame по умолчанию использует stringsAsFactors = TRUE для нечисловых c элементов. Это можно исправить с помощью stringsAsFactors = FALSE в исходном коде

as.data.frame(apply(CI, 2, function(x) 
       format(x, nsmall=3)), stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...