2010-12-01 2 views
7

Я импортировал данные из CSV-файла и привязал набор данных.
Моя проблема: одна переменная находится в целочисленной форме и имеет 295 уровней. Мне нужно использовать эту переменную для создания других, но я не знаю, как бороться с уровнями.Уровни в R Dataframe

Что это такое и как с ними бороться?

+0

Это может означать несколько вещей, в зависимости от того, что вы подразумеваете под «уровнями». Это звучит немного похоже на то, что ваши числа были преобразованы в фактор-переменные, потому что где-то это плохо сформированное число, поэтому R преобразует все это в категориальные «факторные» переменные. Не могли бы вы вырезать и вставить точные коды и сообщения об ошибках здесь, пожалуйста? – Spacedman 2010-12-01 22:18:58

+0

Вы читали `? Factor`? Или `? Levels` – Marek 2010-12-01 22:24:24

+0

setwd (« D:/users/me/Desktop ») данные <- read.csv (« Rdata.csv ») attach (data) ctr <- for (i in 1: 4722) \t \t {as.integer (a [i]/b [i])} – user446667 2010-12-01 22:24:49

ответ

1

Сводка (данные), чтобы проверить, что все прочитано правильно. Если столбцы не являются числовыми, которые должны быть, посмотрите на аргумент colClasses для read.csv, чтобы заставить его, что, вероятно, также приведет к значениям NA для плохо сформированных чисел.

help (read.csv) поможет.

8

Когда вы читаете данные с помощью read.table (или read.csv? - вы не указали), добавьте строки аргументовAsFactors = FALSE. Затем вы получите персональные данные.

Если вы ожидаете целых чисел для столбца, тогда у вас должны быть данные, которые не могут интерпретироваться как целые числа, поэтому конвертируйте их в числовые после их чтения.

txt <- c("x,y,z", "1,2,3", "a,b,c") 

d <- read.csv(textConnection(txt)) 
sapply(d, class) 
     x  y  z 
##"factor" "factor" "factor" 

## we don't want factors, but characters 
d <- read.csv(textConnection(txt), stringsAsFactors = FALSE) 
sapply(d, class) 

#   x   y   z 
#"character" "character" "character" 

## convert x to numeric, and wear NAs for non numeric data 
as.numeric(d$x) 

#[1] 1 NA 
#Warning message: 
#NAs introduced by coercion 

Наконец, если вы хотите проигнорировать эти данные ввода и извлечь целые уровни из коэффициента использования, например. as.numeric (уровни (d $ x)) [d $ x], согласно «Warning» в? factor. !

4

Работа с вашего разъяснения я предлагаю вам повторить ваше заявление для чтения с read.table и заголовок = TRUE, stringAsFactors = FALSE и as.is = stringsAsFactors и Сентябре = "":

datinp <- read.table("Rdata.csv", header=TRUE, stringAsFactors=FALSE , 
         as.is = !stringsAsFactors , sep=",") 
datinp$a <- as.numeric(datinp$a) 
datinp$b <- as.numeric(datinp$b) 
datinp$ctr <- with(datinp, as.integer(a/b)) # no loop needed when using vector arithmetic 
5

или вы может просто использовать

d$x2 = as.numeric(as.character(d$x)).