Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 会计核算;“失踪”;值,处理0';应该输入s_R_Dataframe_Plot - Fatal编程技术网

R 会计核算;“失踪”;值,处理0';应该输入s

R 会计核算;“失踪”;值,处理0';应该输入s,r,dataframe,plot,R,Dataframe,Plot,好吧,我知道这看起来像是一百万个类似的问题。但我不认为我见过一个与这个确切的问题,所以我在这里哈哈 假设您有一个按客户、sku和日期划分的销售数据框架。世界上一切都好。但是如果你有这个df,它是巨大的(数百个客户,如果我们想进一步惩罚自己,每周都有数百个SKU)。然后,根据客户、sku和周进行分组,然后进行汇总,我们发现并非所有客户每周都会购买所有sku。这使事情复杂化 例如,如果客户每周没有一条线条目,且每个未购买的sku的收入值为0,则使用geom_line和geom_smooth绘图将变得

好吧,我知道这看起来像是一百万个类似的问题。但我不认为我见过一个与这个确切的问题,所以我在这里哈哈

假设您有一个按客户、sku和日期划分的销售数据框架。世界上一切都好。但是如果你有这个df,它是巨大的(数百个客户,如果我们想进一步惩罚自己,每周都有数百个SKU)。然后,根据客户、sku和周进行分组,然后进行汇总,我们发现并非所有客户每周都会购买所有sku。这使事情复杂化

例如,如果客户每周没有一条线条目,且每个未购买的sku的收入值为0,则使用geom_line和geom_smooth绘图将变得不准确。这些线继续沿着它们的轨迹运行,而不是下降到零

我现在可能非常愚蠢,但我如何在一周内任何客户都没有购买sku时,以0收入介绍所有这些条目,以便获得所需的适当图表?还是有一种完全不同的方式来处理这类事情

# Extremely simplified
# Plot from DF WO zeros

df_plot<- data.frame(x=c(1,2,3,4,5,10), y=c(1,2,3,4,5,10))
ggplot(df_plot,aes(x,y))+
  geom_point()+
  geom_smooth()+
  geom_line()

# Theoretical plot where we have zeros where no sales were made

df_plot2<- data.frame(x=c(1,2,3,4,5,6,7,8,9,10), y=c(1,2,3,4,5,0,0,0,0,10))
ggplot(df_plot2,aes(x,y))+
  geom_point()+
  geom_smooth()+
  geom_line()
#极其简化
#从DF WO零开始绘图

df_plot您可以使用
tidyr::complete
tidyr::full_seq
填充数据集中不存在的因子变量或连续变量级别的缺失值

就你而言,我认为你需要:

# Load required packages.
library(ggplot2)
library(tidyr)

# Create data frame with 0 values omitted.
df_plot<- data.frame(x=c(1,2,3,4,5,10), y=c(1,2,3,4,5,10))
ggplot(df_plot,aes(x,y))+
  geom_point()+
  geom_smooth()+
  geom_line()

# Fill gap in continuous variable with 0's and plot. 
df_plot %>% 
  complete(x = full_seq(x, 1), fill = list(y = 0)) %>% 
  ggplot(., aes(x, y)) +
  geom_point() +
  geom_smooth() +
  geom_line()

我应该说,假设上面的x是周数,y是收入
?tidyr::complete
来添加0。由您决定是要将0添加到整个数据帧,还是在绘图时将每个小数据帧添加到0。也许您可以使用ifelseThank you Gregor!这正是我需要的
df_plot %>% 
statar::fill_gap(x, full = TRUE) %>% 
  replace_na(list(y = 0)) %>% 
  ggplot(., aes(x, y)) +
  geom_point() +
  geom_smooth() +
  geom_line()