R 完成分组,然后将零添加到缺少的单元格
如何在R中使用R 完成分组,然后将零添加到缺少的单元格,r,R,如何在R中使用dplyr执行此操作。我有这张桌子 Product Week Count A Wk1 2 A Wk2 2 B Wk1 3 C Wk2 4 C Wk3 3 我希望输出是这样的 Product Week Count A Wk1 2 A Wk2 2 A Wk3 0 B
dplyr
执行此操作。我有这张桌子
Product Week Count
A Wk1 2
A Wk2 2
B Wk1 3
C Wk2 4
C Wk3 3
我希望输出是这样的
Product Week Count
A Wk1 2
A Wk2 2
A Wk3 0
B Wk1 3
B Wk2 0
B Wk3 0
C Wk1 0
C Wk2 4
C Wk3 3
这里有一种方法可以为缺少的产品周组合添加计数为零的行:
# 0. attach dplyr for join, mutate, and magrittr pipe (%>%)
library(dplyr)
# 1. get the data as a data frame
dat <- read.table(text="
Product Week Count
A Wk1 2
A Wk2 2
B Wk1 3
C Wk2 4
C Wk3 3
", header=TRUE)
# 2. get unique products and unique weeks
products <- unique(dat$Product)
weeks <- unique(dat$Week)
# 3.1 create a df with all combos of product and week
expand.grid(Product=products, Week=weeks, stringsAsFactors=FALSE) %>%
# 3.2 join it with original data (introduces NA counts for missing combos)
left_join(dat, by=c("Product", "Week")) %>%
# 3.3 replace NA counts with zero
mutate(Count = ifelse(is.na(Count), 0, Count))
#0。将dplyr附加到连接、变异和magrittr管道(%%>%)
图书馆(dplyr)
# 1. 以数据帧的形式获取数据
dat这里有一种方法可以为缺少的产品周组合添加计数为零的行:
# 0. attach dplyr for join, mutate, and magrittr pipe (%>%)
library(dplyr)
# 1. get the data as a data frame
dat <- read.table(text="
Product Week Count
A Wk1 2
A Wk2 2
B Wk1 3
C Wk2 4
C Wk3 3
", header=TRUE)
# 2. get unique products and unique weeks
products <- unique(dat$Product)
weeks <- unique(dat$Week)
# 3.1 create a df with all combos of product and week
expand.grid(Product=products, Week=weeks, stringsAsFactors=FALSE) %>%
# 3.2 join it with original data (introduces NA counts for missing combos)
left_join(dat, by=c("Product", "Week")) %>%
# 3.3 replace NA counts with zero
mutate(Count = ifelse(is.na(Count), 0, Count))
#0。将dplyr附加到连接、变异和magrittr管道(%%>%)
图书馆(dplyr)
# 1. 以数据帧的形式获取数据
dat使用tidyverse
包以下代码将完成缺失组合,允许您指定缺失组合的值:
library(tidyverse)
my_df %>%
complete(Product,Week,fill=list(Count=0))
结果是:
# A tibble: 9 x 3
Product Week Count
<chr> <chr> <dbl>
1 A Wk1 2.00
2 A Wk2 2.00
3 A Wk3 0
4 B Wk1 3.00
5 B Wk2 0
6 B Wk3 0
7 C Wk1 0
8 C Wk2 4.00
9 C Wk3 3.00
#一个tible:9 x 3
产品周数
1 A Wk1 2.00
2 A Wk2.00
3 A Wk3 0
4 B Wk1 3.00
5B Wk2 0
6 B Wk3 0
7 C Wk1 0
8 C Wk2 4.00
9 C Wk3.00
使用tidyverse
软件包以下代码将完成缺失的组合,允许您指定缺失组合的值:
library(tidyverse)
my_df %>%
complete(Product,Week,fill=list(Count=0))
结果是:
# A tibble: 9 x 3
Product Week Count
<chr> <chr> <dbl>
1 A Wk1 2.00
2 A Wk2 2.00
3 A Wk3 0
4 B Wk1 3.00
5 B Wk2 0
6 B Wk3 0
7 C Wk1 0
8 C Wk2 4.00
9 C Wk3 3.00
#一个tible:9 x 3
产品周数
1 A Wk1 2.00
2 A Wk2.00
3 A Wk3 0
4 B Wk1 3.00
5B Wk2 0
6 B Wk3 0
7 C Wk1 0
8 C Wk2 4.00
9 C Wk3.00
到目前为止您尝试了什么?你的实际代码在哪里?到目前为止你尝试了什么?您的实际代码在哪里?我们的R基础设施还不支持此库。任何其他可以完成这样的简短任务的库?tidyr
,函数complete
来自tidyr
Scipione,我可以再问你一个与我的问题有关的问题吗。我想计算每周唯一值的数量(假设我需要每个产品的3周计数),但如果少于3周,我想复制前一周的计数,并将零计数和更改列名为第3周。在评论中回答您有点困难,因为我不确定我是否能找出你想要的输出…也许你的问题还存在于SO中。不管它是否存在,尝试提出一个新问题,SO社区将帮助您。输入产品周计数1 a Wk1 2.00 2 B Wk2 2.00 3 C Wk3 1.00 4 a Wk1 3.00 5 B Wk2 2.00 6 C Wk3 1.00 7 a Wk1 2.00输出1 a Wk1 2.00 2 B Wk2 2.00 3 C Wk31.00 4 A Wk1 3.00 5 B Wk2 2.00 6 C Wk3 1.00 7 A Wk1 0 8 B Wk2 0 9 C Wk3 0这里是输入与输出。也许会有帮助。我认为解决方案接近于此,因为我们的基础设施还不支持此库。任何其他可以完成这样的简短任务的库?tidyr
,函数complete
来自tidyr
Scipione,我可以再问你一个与我的问题有关的问题吗。我想计算每周唯一值的数量(假设我需要每个产品的3周计数),但如果少于3周,我想复制前一周的计数,并将零计数和更改列名为第3周。在评论中回答您有点困难,因为我不确定我是否能找出你想要的输出…也许你的问题还存在于SO中。不管它是否存在,尝试提出一个新问题,SO社区将帮助您。输入产品周计数1 a Wk1 2.00 2 B Wk2 2.00 3 C Wk3 1.00 4 a Wk1 3.00 5 B Wk2 2.00 6 C Wk3 1.00 7 a Wk1 2.00输出1 a Wk1 2.00 2 B Wk2 2.00 3 C Wk31.00 4 A Wk1 3.00 5 B Wk2 2.00 6 C Wk3 1.00 7 A Wk1 0 8 B Wk2 0 9 C Wk3 0这里是输入与输出。也许会有帮助。我认为解决办法也很接近这个