2013-03-23 2 views
2

У меня очень большой файл csv. Я хочу рассчитать частоту элементов во втором столбце, чтобы графовать гистограмму. Пример моих данных:Частота элементов в списке в R

0010,10.1.1.16 
0011,10.2.2.10 
0012,192.168.2.61 
0013,192.168.173.19 
0014,10.2.2.10 
0015,10.2.2.10 
0016,192.168.2.61 

Я использовал ниже:

inFile <- read.csv("file.csv") 
    summary(inFile) 
    hist(inFile$secondCol) 

выхода резюме:

X0010    X10.1.1.16 
    Min. :11.00 10.2.2.10  :3 
    1st Qu.:12.25 192.168.173.19:1 
    Median :13.50 192.168.2.61 :2 
    Mean :13.50      
    3rd Qu.:14.75      
    Max. :16.00 

Поскольку файл очень большой, я не получаю правая гистограмма. Какие-либо предложения?

ответ

4

Просто используйте table.

DF <- structure(list(V1 = 10:16, V2 = structure(c(1L, 2L, 4L, 3L, 2L, 
      2L, 4L), .Label = c("10.1.1.16", "10.2.2.10", 
      "192.168.173.19", "192.168.2.61"), class = "factor")), 
      .Names = c("V1", "V2"), class = "data.frame", 
      row.names = c(NA, -7L)) 

table(DF$V2) 
#  10.1.1.16  10.2.2.10 192.168.173.19 192.168.2.61 
#   1    3    1    2 

Если вы хотите data.frame из-за этого, вы можете использовать as.data.frame:

as.data.frame(table(DF$V2)) 
#    Var1 Freq 
# 1  10.1.1.16 1 
# 2  10.2.2.10 3 
# 3 192.168.173.19 1 
# 4 192.168.2.61 2 

Так как вы говорите, что вы хотите histogram, это можно сделать непосредственно с помощью ggplot2без необходимости получить отсчеты первое следующим образом:

require(ggplot2) 
ggplot(data = DF, aes(x = V2)) + geom_histogram(aes(y = ..count..)) 

enter image description here

+0

Я согласен, но моя проблема в том, что файл очень большой, не может быть открыт с R. Вот почему я читаю значения один за другим. Поэтому сначала мне нужно заполнить список, а затем применить гистограмму. Вопрос о том, как заполнить список, исходя из частоты элемента. – SimpleNEasy

+0

, какую версию R (и 32- или 64-разрядную) вы используете и насколько велики ваши данные? – Arun

+0

R версия 2.15.2 (2012-10-26), платформа: x86_64-w64-mingw32/x64 (64-разрядная версия). У меня более одного файла и размер меняются. Размеры в Gb. – SimpleNEasy

1

Мы могли бы также сделать as.numeric() в столбце.

typeof(data$hourofcrime) 
# gives me a list 
#> typeof(data$hourofcrime) 
#[1] "list" 
hour_crime_rate <- as.numeric(data$hourofcrime) 
hist(hour_crime_rate)