我的问题是基于此question https://stackoverflow.com/questions/35614425/r-code-programming-filling-missing-column-values-down-first-and-then-up-on-a-st/35614728#35614728.
我有一个数据如下。我想通过先向下看然后向上查找来填充单元格,只要 bom 相同。如果 bom=A,我想填充如图所示的行。但在 bom=B 的情况下,由于 type_p 列不同,我想重复行并感受空白
bom=c(rep("A",4),rep("B",3))
Part=c("","lambda","beta","","tim","tom","")
type_p=c("","sub","sub","","sub","pan","")
ww=c(1,2,3,4,1,2,3)
df=data.frame(bom,Part,type_p,ww)
> df
bom Part type_p ww
1 A 1
2 A lambda sub 2
3 A beta sub 3
4 A 4
5 B tim sub 1
6 B tom pan 2
7 B 3
我想要的最终数据如下
bom Part type_p ww
1 A lambda sub 1
2 A lambda sub 2
3 A beta sub 3
4 A beta sub 4
5 B tim sub 1
6 B tim sub 2
7 B tim sub 3
5 B tom pan 1
6 B tom pan 2
7 B tom pan 3
________________________________________更新 1
我想要的逻辑如下。请记住,我的数据非常庞大,每列都有数千个值。
bom 和 ww 列始终填充/填充传入数据
- 检查 bom 列中的条目在 type_p 列中是否有超过 1 个值
- 如果只有 1 个值,则首先向下查找,然后向上查找,以填充 type_p 和 ww 列中的空白。在这种情况下 bom=A 在 type_p (sub) 中只有一个值
- 如果 bom 列中的条目在 type_p 列中具有超过 1 个唯一值,则创建该 bom 相同行的附加集,以便总集将等于该 bom 的 type_p 列中的不同值。在这种情况下 bom=B 在 type_p 中有两个值(sub 和 pan)
- 通过先向下然后向上查找来填充 type_p 和 ww 列中的空白(查看源行以填充值)
=================================================== =========更新2
步骤 3 后,数据框将如下所示
> df
bom Part type_p ww
1 A lambda sub 1
2 A lambda sub 2
3 A beta sub 3
4 A beta sub 4
5 B tim sub 1
6 B 2
7 B 3
8 B 1
9 B tom pan 2
10 B 3