2010-10-17 6 views
0

Ниже приведены первые пять рядов импортируемых данных в R:Как создать структуру данных кадра с столбцами из данных csv в R?

данные [1: 5,]

user event_date day_of_week 
1 00002781A2ADA816CDB0D138146BD63323CCDAB2 2010-09-04 Saturday 
2 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-04 Saturday 
3 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-07  Tuesday 
4 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-08 Wednesday 
5 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-17  Friday 
    distinct_events_a_count total_events_a_count 
1        2       2 
2        2       2 
3        1       3 
4        1       1 
5        1       1 
    events_a_duration distinct_events_b_count total_events_b_count 
1      615      1     1 
2      77      1     1 
3      201      1     1 
4      44      1     1 
5      3      1     1 
    events_b_duration 
1      47 
2      43 
3      117 
4      74 
5      18 

Проблема в том, что столбцы 6 и 9 считываются в качестве факторов, а не Числовые поэтому Я не могу выполнять математические операции. Для того, чтобы конвертировать импортированные данные в соответствующий формат, я пытался создать структуру набора данных следующим образом:

dataset<-data.frame(events_a_duration=as.numeric(c(data[,6])), events_b_duration=as.numeric(c(data[,9]))) 

но проверки значений я заметил, что кадровая структура не содержит соответствующие значения:

dataset[1,] 


events_a_duration events_b_duration 
1     10217     6184 

значение должно быть 615 и 47.

Так что я не знаю, как создать структуру данных кадра, который состоит из импортируемых столбцов данных и был бы очень благодарен, если кто-то может показать путь, чтобы создать соответствующая структура данных р.

+0

Спасибо за полезный ответ! В противном случае я надеюсь, что вы не зависите от сбора баллов, и ваша личность не зависит от виртуальных онлайн-сообществ;) –

+0

Спасибо: получение ответа принято всегда удовлетворительным. :) – Wok

ответ

4

Ваша проблема заключается в том, что вы преобразовываете коэффициенты в целые числа, используя числа классов вместо соответствующих значений. Вы можете проверить, что классы нумеруются в порядке возрастания значений:

> as.numeric(factor(c(615,47,42))) 
[1] 3 2 1 
> as.numeric(factor(c(615,42,47))) 
[1] 3 1 2 
> as.numeric(factor(c(615,42,47,37))) 
[1] 4 2 3 1 
> as.numeric(factor(c(615,42,37,47))) 
[1] 4 2 1 3 

Использование as.numeric(as.character(MyFactor)). Смотрите ниже, например:

> as.numeric(as.character(factor(c(615,42,37,47)))) 
[1] 615 42 37 47