Я новичок в программировании R (версия 4.0.3). Всякий раз, когда я использую функции str() и summary() для получения информации о фрейме данных, имеющем как числовые, так и символы, он не отображает информацию о «факторах» и «уровнях» в выводе для символов. Он показывает только информацию о длине, классе и режиме. Как получить информацию о факторах и уровнях в выводе?
Я полагаю, что ваши соответствующие переменные все еще находятся в формате "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, должен иметь более старую версию. Это должно быть причиной, по которой я столкнулся с этой проблемой. Вы очень хорошо объяснили решение. Спасибо.
Но как назначить символы в качестве факторов при импорте данных в R. например. данные <- read.csv("некоторые данные.csv") ?? Где здесь использовать stringsAsFactors=TRUE?
@some.user read.csv также имеет аргумент stringsAsFactors=, см. редактирование моего ответа.
@some.user PS: вы можете найти доступные аргументы функции в файле справки, например, введите ?read.csv в консоль.
Вы можете превратить столбцы символов в множители. См. stackoverflow.com/questions/65230279/…