R覆盖数据框架中的子文章的某些列



我有一个逐行产品数据的数据框架,包括子文章。现在我想把某些值(列)从父节点转移到所有的子节点。

的例子:

data.frame(sku = c("V1000837", "V1000837-001", "V1000837-002", "01549831"),
height = c(10, 12, NA, 50),
width = c(15, NA, 15, 150),
color = c("red", "blue", "green", "black"),
power = c("12W", NA, NA, "130W"))
sku height width color power
V1000837     10    15   red   12W
V1000837-001 12    NA  blue  <NA>
V1000837-002 NA    15 green  <NA>
01549831     50   150 black  130W

现在我想将父文章(以V开头,不以"-d{3}"结束)的列值接管给所有子文章(以V开头,以"-d{3}"结束)。

我只想接管">power列的值";宽度和">";从父亲到相关的孩子。

结果应该是这样的:

sku height width color power
V1000837     10    15   red  12W
V1000837-001 12    15  blue  12W
V1000837-002 NA    15 green  12W
01549831     50   150 black  130W

不幸的是,我没有办法。谢谢你的帮助。

可以将"-"上的数据分成不同的列。按父(父)值和fillpowerwidth列分组。您可以重新设置unite

library(dplyr)
library(tidyr)
df %>%
separate(sku, c('father', 'child'), sep = '-', fill = 'right') %>%
group_by(father) %>%
fill(power, width, .direction = 'updown') %>%
ungroup %>%
unite(sku, father, child, na.rm = TRUE, sep = '-')
#  sku          height width color power
#  <chr>         <dbl> <dbl> <chr> <chr>
#1 V1000837         10    15 red   12W  
#2 V1000837-001     12    15 blue  12W  
#3 V1000837-002     NA    15 green 12W  
#4 01549831         50   150 black 130W 

最新更新