准备分析数据

时间:2015-04-01 18:50:46

标签: r aggregate

我是新来的,对R和统计数据一般都很新。 我以csv格式获得了简单的100万行数据。有4列:比如说 Col1 - 位置 Col2 - 某人的名字 Col3 - 日期访问 COl4 - 访问时间

将它导入R时,它们被翻译为数据框,所有列都是字符(我使用str()来查找导入数据的结构和class(),这就是为什么我知道它的data.frame。

如你所见,它们都不是数字,我希望能够进行一些聚合,例如按人数,按天计算,按时间按地点计算访问次数,反之亦然。

我是否需要操作R之外的数据,例如导入SQL并在那里进行一些聚合,或者我可以在R中执行此操作吗?

我希望你能引导我走向正确的方向......非常感谢 佩迪

2 个答案:

答案 0 :(得分: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通过你指定的列中值的唯一组合来分割数据框,并根据这些值汇总数据。你指定的函数(在我们的例子中是长度)。

我希望这会有所帮助。

答案 1 :(得分:0)

我喜欢plyr,因为我先学会了它,但似乎每个人都转向dplyr

对于非常具体的计数,count()plyr都有dplyr个功能。

一些例子:

 
> 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