1因子列和15列因子在1因子列下,然后单独计算每个15

时间:2014-11-13 16:04:44

标签: r

我不知道词汇,否则我相信我能够有效地搜索它。到目前为止,我还没有找到任何东西,而且我已经没时间了。

所以我有16列信息,其中1列是因子列,我们假设日期,其他15个是小时(上午6点 - 晚上8点,仅代表小时),有1或0 ,表示活动状态或非活动状态。我想做的是

  • 按因子列(日期)
  • 对数据进行分组
  • 在对所有内容进行分组后,我希望对每个分组的每个15列进行单独求和
  • 显示一个二维表,其中日期垂直运行,时间总和水平运行

如果您能提供帮助,请使用词汇表,这样我不仅可以自己学习,还可以查阅文档并将其传授给其他人。

一个例子是

Date Hour1 Hour2 Hour3 Hour4 Hour5 ... Hour15
9-15   0     0     0     1     1   ...   0
9-15   0     1     1     1     1   ...   0
9-16   0     1     1     1     0   ...   0
9-16   0     0     0     0     0   ...   1
9-16   1     1     0     0     0   ...   1
9-18   0     1     0     1     1   ...   0
.
.
.
11-7   0     1     1     1     0   ...   0

我想要的是

     Hour1 Hour2 Hour3 Hour4 Hour5 ... Hour15
9-15   5    10    15     25   45   ...  20
9-16   5     6    25     28   15   ...  11
9-17   3    45    42      6   17   ...  32
9-18   5    10    15     25   45   ...  20
.
.
.
11-7   12   36    84      9    7   ...  21

其中每个条目是列变量的总和,而不是1或零频率计数。

1 个答案:

答案 0 :(得分:0)

您可以使用dplyr轻松完成此操作 - 首先按列分组"日期"然后使用sum汇总每个其他列:

require(dplyr)
df %>%
  group_by(Date) %>%
  summarise_each(funs(sum))
#Source: local data frame [4 x 7]
#
#  Date Hour1 Hour2 Hour3 Hour4 Hour5 Hour15
#1 11-7     0     1     1     1     0      0
#2 9-15     0     1     1     2     2      0
#3 9-16     1     2     1     1     0      2
#4 9-18     0     1     0     1     1      0

数据

df <- structure(list(Date = structure(c(2L, 2L, 3L, 3L, 3L, 4L, 1L), .Label = c("11-7", 
"9-15", "9-16", "9-18"), class = "factor"), Hour1 = c(0L, 0L, 
0L, 0L, 1L, 0L, 0L), Hour2 = c(0L, 1L, 1L, 0L, 1L, 1L, 1L), Hour3 = c(0L, 
1L, 1L, 0L, 0L, 0L, 1L), Hour4 = c(1L, 1L, 1L, 0L, 0L, 1L, 1L
), Hour5 = c(1L, 1L, 0L, 0L, 0L, 1L, 0L), Hour15 = c(0L, 0L, 
0L, 1L, 1L, 0L, 0L)), .Names = c("Date", "Hour1", "Hour2", "Hour3", 
"Hour4", "Hour5", "Hour15"), class = "data.frame", row.names = c(NA, 
-7L))