我是新来的,对R和统计数据一般都很新。 我以csv格式获得了简单的100万行数据。有4列:比如说 Col1 - 位置 Col2 - 某人的名字 Col3 - 日期访问 COl4 - 访问时间
将它导入R时,它们被翻译为数据框,所有列都是字符(我使用str()来查找导入数据的结构和class(),这就是为什么我知道它的data.frame。
如你所见,它们都不是数字,我希望能够进行一些聚合,例如按人数,按天计算,按时间按地点计算访问次数,反之亦然。
我是否需要操作R之外的数据,例如导入SQL并在那里进行一些聚合,或者我可以在R中执行此操作吗?
我希望你能引导我走向正确的方向......非常感谢 佩迪
答案 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