在我的示例中,我有一个表,其中的产品在Store 1中有一个唯一的ID,在Store 2中有一个不同的(但也是唯一的)ID.

通常,同一产品在门店1中的ID始终相同,在门店2中的ID始终相同.i、 e.如果我只知道这些变量中的一个,我应该能够填写其余的变量.

然而,我没有一个整洁的参考表或列表来显示哪些产品和ID属于一起.我首先要做的是一张有很多间隙的桌子,比如:

Before

我想用表格中已有的信息来填补空白,如下所示:

After

有没有一个R函数可以做到这一点,或者你会怎么做?

#Example data
df <- data.frame(
  c(NA, "Shovel", NA, NA, "Gloves", NA),
  c("W06", NA, "W06", "W11", "W11", NA),
  c("EF001", "EF001", NA, NA, "EF004", "EF004")
)
colnames(df) <- c("Product", "Store1_ID", "Store2_ID")


df2 <- data.frame(
  c("Shovel",NA, NA, NA, "Gloves", NA),
  c(NA, "W06", "W06", "W11", "W11", NA),
  c("EF001", "EF001", NA, NA, "EF004", "EF004")
)
colnames(df2) <- c("Product", "Store1_ID", "Store2_ID")

推荐答案

更新二:对于新的数据集df2:

加上.direction参数,用于在分组变量的两个方向上填充,然后应用fill_run函数:

library(dplyr)
library(runner)

df2 %>% 
  fill(Store1_ID, .direction = "updown") %>% 
  group_by(Store1_ID) %>% 
  mutate(across(everything(), ~fill_run(., run_for_first = TRUE)))
  Product Store1_ID Store2_ID
  <chr>   <chr>     <chr>    
1 Shovel  W06       EF001    
2 Shovel  W06       EF001    
3 Shovel  W06       EF001    
4 Gloves  W11       EF004    
5 Gloves  W11       EF004    
6 Gloves  W11       EF004 

Update.考虑分组:

library(dplyr)
library(runner)

df %>% 
  fill(Store1_ID) %>% 
  group_by(Store1_ID) %>% 
  mutate(across(everything(), ~fill_run(., run_for_first = TRUE)))
   Product Store1_ID Store2_ID
  <chr>   <chr>     <chr>    
1 Shovel  W06       EF001    
2 Shovel  W06       EF001    
3 Shovel  W06       EF001    
4 Gloves  W11       EF004    
5 Gloves  W11       EF004    
6 Gloves  W11       EF004    

R相关问答推荐

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

如果可能,将数字列转换为整数,否则保留为数字

有效识别长载体中的高/低命中

绘制采样开始和采样结束之间的事件

合并后返回列表的数据帧列表

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

更新R中的数据表(使用data.table)

如何在R中使用hmm TMB提前一步预测观察到的状态?

在R中,如何将误差条放置在堆叠的每个条上?

防止在更新SHINY中的Reactive Value的部分内容时触发依赖事件

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

有没有办法将勾选/审查标记添加到R中的累积关联图中?

从矩阵创建系数图

如何创建直方图与对齐的每月箱?

如何计算多个变量的百分比与总和的百分比?

打印的.txt文件,将值显示为&Quot;Num&Quot;而不是值

残差与拟合图上标记点的故障排除

可以在R中同步3D散点图(打印)吗?

在ggplot2条形图中保留未使用的级别无法正常工作

从组中随机 Select 值序列