2010-10-17 33 views
0

ci-après les cinq premières lignes des données importées dans R:comment créer la structure de données de trame avec des colonnes de données csv dans R?

données [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 

Le problème est que les colonnes 6 et 9 sont lues en tant que facteurs et non pas des valeurs numériques, par conséquent Je ne peux pas effectuer d'opérations mathématiques. Afin de convertir les données importées au format approprié j'ai essayé de créer l'ensemble de données de la structure de la manière suivante:

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

mais vérifier les valeurs que je remarquai que la structure du cadre ne contient pas les valeurs appropriées:

dataset[1,] 


events_a_duration events_b_duration 
1     10217     6184 

les valeurs doivent être 615 et 47.

donc ce que je ne sais pas comment créer la structure de données de trame qui se compose de colonnes de données importées et serait très reconnaissant si quelqu'un pouvait montrer la façon de créer la structure de données appropriée ture.

+0

Merci pour la réponse utile! Sinon, j'espère que vous n'êtes pas accro à collecter des points et votre identité ne dépend pas de communautés en ligne virtuelles;) –

+0

Merci: obtenir une réponse acceptée est toujours satisfaisant. :) – Wok

Répondre

4

Votre problème est que vous convertissez des facteurs en nombres entiers en utilisant les nombres de classes au lieu des valeurs correspondantes. Vous pouvez vérifier que les classes sont numérotées dans l'ordre croissant des valeurs:

> 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 

Utilisez as.numeric(as.character(MyFactor)). Voir ci-dessous par exemple:

> as.numeric(as.character(factor(c(615,42,37,47)))) 
[1] 615 42 37 47 
1
data <- read.csv ("data.csv", stringsAsFactors=FALSE)