2015-04-01 33 views
0

我是新来的,对R和一般统计都很新颖。 我以csv格式获得了一百万行数据。有4列:说 Col1中 - 位置 col2的 - 别人的名字 COL3 - 日访问 COL4 - 参观时间准备分析数据

当导入式的R它们被翻译成数据帧和所有列字符(我使用STR ()找到我的导入数据和类的结构()这就是为什么我知道它的一个data.frame。

正如你看到他们都没有数字,我想能够做一些聚合例如计数数按地点访问,按地点访问,反之亦然。

我是否需要操作R之外的数据,例如导入到SQL并在那里做一些聚合,或者我可以在R中做到这一点?

我希望你能指导我在正确的方向...许多感谢 佩迪

+0

可以使用'表()'函数来按组计数。参见'?table' – 2015-04-01 18:59:38

+0

看看'xtabs'函数。如果使用'tapply'或'aggregate',返回计数的标准方法是使用'length'。 @hadley(和其他我认为)已经构建了addon包的'count'函数。 – 2015-04-01 19:09:14

回答

0

我建议让您熟悉plyr包。

install.packages("plyr") 

它会要求你选择一个地方下载,只需选择最接近你的地方。然后加载库

library(plyr) 

好了,所以可以说我们有一个看起来像这样

> df 
    Name Day Location 
52 Jake Wed  MI 
25 Sally Tue  NY 
38 Sue Fri  NY 
45 Sally Tue  MI 
42 Sue Mon  MI 
17 Sally Fri  CA 
28 Jake Tue  NY 
14 Sue Thur  CA 
47 Jim Tue  MI 
67 Jim Tue  AL 

我们可以问每一个位置了多少次访问数据帧

> ddply(df, .(Location), summarise, count=length(Name)) 
    Location count 
1  CA  2 
2  NY  3 
3  MI  4 
4  AL  1 

,或者有多少人们在某一天访问了某个位置

> ddply(df, .(Location, Day), summarise, count=length(Name)) 
    Location Day count 
1  CA Thur  1 
2  CA Fri  1 
3  NY Tue  2 
4  NY Fri  1 
5  MI Mon  1 
6  MI Tue  2 
7  MI Wed  1 
8  AL Tue  1 

你应该在plyr上查看一个完整的教程,但是对于上面的命令,基本上发生的是ddply正在通过指定的列中值的唯一组合来拆分数据框,并根据函数汇总数据(在我们的案例长度),你指定。

我希望这会有所帮助。

0

我喜欢plyr,因为我第一次了解它,但似乎每个人都在向dplyr转变。

对于非常具体的计数,plyrdplyr中都有count()函数。

一些例子:

 
> plyr::count(df$column1) 
    x freq 
1 var1 55 
2 var2 63 
3 var3 12
 
> plyr::count(df$column1 == "var1") 
     x freq 
1 FALSE 75 
2 FALSE 55
> plyr::count(df$column1 == "var1" & df$column2 == "varA") 
     x freq 
1 FALSE 105 
2 FALSE 25

对于dplyr,对于给定的第一个例子的基本语法是:

 
> dplyr::count(df, column1) 
# A tibble: 2 x 2 
    column1 n  
    chr  int 
1 var1 55 
2 var2 63 
3 var3 12