Сводка и строка не дают информацию о факторах и уровнях фрейма данных.

Я новичок в программировании R (версия 4.0.3). Всякий раз, когда я использую функции str() и summary() для получения информации о фрейме данных, имеющем как числовые, так и символы, он не отображает информацию о «факторах» и «уровнях» в выводе для символов. Он показывает только информацию о длине, классе и режиме. Как получить информацию о факторах и уровнях в выводе?

Вы можете превратить столбцы символов в множители. См. stackoverflow.com/questions/65230279/…

Ronak Shah 21.12.2020 07:09
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
1
988
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я полагаю, что ваши соответствующие переменные все еще находятся в формате "character". Вы можете использовать as.factor, чтобы преобразовать его в формат "factor". Пример:

dat1 <- data.frame(num=1:10,
                   chr=letters[1:10])

str(dat1)
# 'data.frame': 10 obs. of  2 variables:
# $ num: int  1 2 3 4 5 6 7 8 9 10
# $ chr: chr  "a" "b" "c" "d" ...

summary(dat1)
# num            chr           
# Min.   : 1.00   Length:10         
# 1st Qu.: 3.25   Class :character  
# Median : 5.50   Mode  :character  
# Mean   : 5.50                     
# 3rd Qu.: 7.75                     
# Max.   :10.00    

dat1$fac <- as.factor(dat1$chr)

str(dat1)
# 'data.frame': 10 obs. of  3 variables:
# $ num: int  1 2 3 4 5 6 7 8 9 10
# $ chr: chr  "a" "b" "c" "d" ...
# $ fac: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10

summary(dat1)
#      num            chr                 fac   
# Min.   : 1.00   Length:10          a      :1  
# 1st Qu.: 3.25   Class :character   b      :1  
# Median : 5.50   Mode  :character   c      :1  
# Mean   : 5.50                      d      :1  
# 3rd Qu.: 7.75                      e      :1  
# Max.   :10.00                      f      :1  
#                                    (Other):4  

В R 4.0.x data.frame() и другие функции используют stringsAsFactors=FALSE по умолчанию, тогда как раньше это было TRUE. Возможно, ваш коллега использует более раннюю версию, и поэтому ваши результаты отличаются? Использование stringsAsFactors=TRUE производит факторы. Тем не менее, новый вариант воспринят довольно положительно.

dat2 <- data.frame(num=1:10,
                   chr=letters[1:10],
                   stringsAsFactors=TRUE)

str(dat2)
# 'data.frame': 10 obs. of  2 variables:
# $ num: int  1 2 3 4 5 6 7 8 9 10
# $ chr: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10

Редактировать

Read.csv также имеет аргумент stringsAsFactors=, который мы можем установить равным TRUE. Пример:

dat3 <- data.frame(num=1:10, chr=letters[1:10])

class(dat3$chr)
# [1] "character"

write.csv(dat1, "dat1.csv")  ## store a .csv

dat4 <- read.csv("dat1.csv", stringsAsFactors=TRUE)  ## read in

class(dat4$chr)
# [1] "factor"

Да, вы правы в том, что источник, из которого я изучаю R, должен иметь более старую версию. Это должно быть причиной, по которой я столкнулся с этой проблемой. Вы очень хорошо объяснили решение. Спасибо.

some.user 21.12.2020 10:01

Но как назначить символы в качестве факторов при импорте данных в R. например. данные <- read.csv("некоторые данные.csv") ?? Где здесь использовать stringsAsFactors=TRUE?

some.user 21.12.2020 10:18

@some.user read.csv также имеет аргумент stringsAsFactors=, см. редактирование моего ответа.

jay.sf 21.12.2020 10:28

@some.user PS: вы можете найти доступные аргументы функции в файле справки, например, введите ?read.csv в консоль.

jay.sf 21.12.2020 10:36

Другие вопросы по теме