【问题标题】:preparing data for analysis为分析准备数据
【发布时间】:2015-04-01 18:50:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您可以使用table() 函数按组获取计数。见?table
  • 查看xtabs函数。如果您使用tapplyaggregate,则返回计数的标准方法是使用length。 @hadley(以及我认为的其他人)已经为插件包构建了 count 函数。

标签: r aggregate


【解决方案1】:

我建议熟悉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 通过您指定的列中值的唯一组合来拆分您的数据框,并根据您指定的函数(在我们的例子中是长度)。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多