использование фрейма данных в R - PullRequest
0 голосов
/ 02 апреля 2011

У меня есть файл .csv, который я прочитал в R как кадр данных (скажем, df). Первый столбец - это дата в формате мм / дд / гггг. Второй столбец - это двойное число. Что я хочу сделать, это создать новый фрейм данных, например:

df2<-data.frame(date=c(df[10,1],df[15,2]),num=c(111,222))

Когда я пытаюсь сделать это, я получаю очень грязный df2. Скорее всего, я делаю это неправильно, потому что я не понимаю концепцию фрейма данных.

Всякий раз, когда я пытаюсь сделать df[10,1], выводом будет 10-я строка и 1-й столбец df, включая все уровни столбца 1.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2011

Вы можете контролировать, как R будет интерпретировать классы считываемых данных, указав вектор классов столбцов в качестве аргумента для read.table с помощью colClasses. В противном случае R будет использовать type.convert, что преобразует вектор символов «логическим» способом, согласно определению R логического. Это, очевидно, имеет некоторые потенциальные причуды, если вы не знакомы с ними.

Вы также можете запретить R создавать фактор, указав stringsAsFactors = FALSE в качестве аргумента в read.table, обычно это более простой вариант, чем указание всех colClasses.

Вы можете отформатировать дату с помощью strptime(). Принимая все это во внимание, я бы рекомендовал читать ваши данные в R, не превращая символьные данные в факторы, а затем использовать strptime для форматирования.

df <- read.csv("myFile.csv", stringsAsFactors = FALSE)
#Convert time to proper time format
df$time <- strptime(df$time, "%m/%d/%Y")
0 голосов
/ 10 июля 2012

, если вы не хотите вводить stringsAsFactors = FALSE каждый раз, когда читаете / конструируете фрейм данныхможно с самого начала указать

 options(stringsAsFactors=FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...