我有一个非常大的csv文件.我想计算第二列中项目的频率,以便绘制直方图.我的数据的一个例子:
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
Run Code Online (Sandbox Code Playgroud)
我用过以下内容:
inFile <- read.csv("file.csv")
summary(inFile)
hist(inFile$secondCol)
Run Code Online (Sandbox Code Playgroud)
摘要输出:
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
Run Code Online (Sandbox Code Playgroud)
因为文件非常大,我没有得到正确的直方图.有什么建议?
只是用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
Run Code Online (Sandbox Code Playgroud)
如果你想要一个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
Run Code Online (Sandbox Code Playgroud)
既然你说你想要一个histogram,这可以直接使用,ggplot2 而不必先得到计数如下:
require(ggplot2)
ggplot(data = DF, aes(x = V2)) + geom_histogram(aes(y = ..count..))
Run Code Online (Sandbox Code Playgroud)
