r - 在 R 中汇总数据并添加不同的变异
问题描述
我想在数据清理后最后总结一下我的数据。
这是我的数据结构:
structure(list(ID = structure(c(1L, 3L, 4L, 2L, 2L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L), .Label = c("01002",
"01004", "01005", "01006", "01009", "01011"), class = "factor"),
date = structure(c(17645, 17645, 17645, 17646, 17646, 17646,
17646, 17646, 17646, 17646, 17648, 17646, 17648, 17646, 17648,
17646, 17646, 17646, 17649, 17646), class = "Date"), category = structure(c(1L,
1L, 1L, 2L, 4L, 7L, 3L, 3L, 1L, 6L, 6L, 6L, 7L, 7L, 7L, 6L,
2L, 5L, 3L, 3L), .Label = c("A", "B", "C", "D", "F", "G",
"Q"), class = "factor"), level = c(3000, 3000, 1000, 1000,
1000, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 8000, 9999,
9999, 9999, 300, 300, 300, 9999)), class = "data.frame", row.names = c(NA,
-20L))
这是我到目前为止的代码:
dataDF %>%
dplyr::group_by(category) %>%
dplyr::summarize(n = n()) %>%
dplyr::mutate(percentage = (prop.table(n))*100) %>%
arrange(desc(n))
结果如下:
category n percentage
<fct> <int> <dbl>
1 A 4 20
2 C 4 20
3 G 4 20
4 Q 4 20
5 B 2 10
6 D 1 5
7 F 1 5
现在我想添加一个包含日期聚合的新列。
我需要为每个类别添加每个 ID 的平均计数日期。
以下是数据的外观(随机数,未计算)。
category n percentage mean_reported_days_per_ID
<fct> <int> <dbl> <int>
1 A 4 20 2
2 C 4 20 3.4
3 G 4 20 4
4 Q 4 20 1
5 B 2 10 3.5
6 D 1 5 2
7 F 1 5 1.1
我不确定如何实现。我尝试添加另一个 mutate() 并计算每个 ID 的平均天数并将其(与另一个分组依据)添加到数据表中。
谢谢你的帮助!
解决方案
您想要每个类别的每个 ID 的平均唯一日期吗?
你只需要分组和总结两次:
require(dplyr)
dataDF %>%
group_by(ID, category) %>%
summarise(distinctDates = n_distinct(date)) %>%
group_by(category) %>%
summarise(mean(distinctDates))
# category `mean(distinctDates)`
# <fct> <dbl>
# 1 A 1.33
# 2 B 1
# 3 C 1
# 4 D 1
# 5 F 1
# 6 G 1
# 7 Q 1
如果您想将这些值加入您现有的 DF,只需执行
left_join(your.existing.df, this.new.df, by = "category")
推荐阅读
- c++ - Poco::Logger 打印 int8_t 值
- amazon-quicksight - QuickSight 中的 Sumover
- css - CSS - 如何将文本组成另一个文本和向下的按钮
- sql - 我怎样才能将另一个 SQL COUNT 嵌套到其中?
- angular6 - Angular6:动态实例化(使用新的)类,包括依赖注入
- mysql - MySQL 跨多个索引搜索
- c# - Linux下C#,Process.Start()出现“No such file or directory”异常
- sql - 以高做大
- asp.net - 在 ASP.NET MVC5 视图中显示单元测试结果
- python - Tensorflow TocoConverter 给出 toco_from_protos 错误