R рассматривает имя фактора как уровень - PullRequest
0 голосов
/ 29 августа 2018

Я получаю данные из файла Excel (две переменные, одна категориальная, а другая числовая), а затем меняю их типы на факторные и числовые соответственно:

setwd("D:/Desktop/")
db_nouns = read.table ("Final_Database.txt")
db_nouns = db_nouns [2:507,]
colnames (db_nouns) = c ("category", "space")
db_nouns$category = as.factor (db_nouns$category)
db_nouns$space = as.numeric(as.character(db_nouns$space))

Теперь я хотел бы расположить уровни факторов (для категории) так, чтобы они появлялись на графике (позже) в определенном порядке:

levels (db_nouns$category) = c( "Ground", "Building", "Tool_precise_grip", "Tool_power_grip", "Food", "Clothes", "Animal", "Object", "Transport", "Action", "Body_Part", "Sense_Phys", "Sound", "Sense_Emotion", "Intelligence", "Space")

Однако, когда я делаю это, я получаю ошибку:

*Error in `levels<-.factor`(`*tmp*`, value = c("Ground", "Building", "Tool_precise_grip",  : 
  number of levels differs*

Если я проверяю уровни в db_nouns $ category, я получаю еще один дополнительный уровень, называемый "category", т. Е. R рассматривает имя фактора как один из уровней (см. Строку 5 ниже). Как я могу это исправить?

> levels (db_nouns$category)
 [1] "Action"            "Animal"            "Body_Part"         "Building"         
 [5] "Category"          "Clothes"           "Food"              "Ground"           
 [9] "Intelligence"      "Object"            "Sense_Emotion"     "Sense_Phys"       
[13] "Sound"             "Space"             "Tool_power_grip"   "Tool_precise_grip"
[17] "Transport" 

1 Ответ

0 голосов
/ 29 августа 2018

Используйте stringsAsFactors=T при чтении данных и header = T:

db_nouns <- read.table("Final_Database.txt", stringsAsFactors = T, header = T)

colnames(db_nouns) <- c ("category", "space")

new_order <- c( "Ground", "Building", "Tool_precise_grip", "Tool_power_grip", "Food", "Clothes", "Animal", "Object", "Transport", "Action", "Body_Part", "Sense_Phys", "Sound", "Sense_Emotion", "Intelligence", "Space")

db_nouns$category <- factor(db_nouns$category, levels = new_order)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...