我的问题是基于此question。R:根据其他列填充和/或复制行
我有一个数据如下。我想先填满单元格,然后再查看,只要单元格是相同的。在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
________________________________________Update 1
我想要的逻辑如下。请记住,我的数据非常庞大,每列中都有数千个值。
BOM和WW列总是会填充/填充输入数据
- 检查是否在列BOM中的条目在type_p
- 列大于1倍的值如果只有1值,则填补空白在type_p和ww列中,先查看然后查找。在这种情况下,bom = A在type_p(sub)中只有一个值
- 如果column bom中的条目在type_p列中有多个唯一值,则创建该bom的相同行的附加集合,以使总集合为等于该bom的type_p列中的不同值。在这种情况下BOM = B在type_p两个值(子和平移)先向下看,然后查找在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
这是一个非常可解决的问题,但是你的例子并不遵循你的逻辑 - 你需要在步骤3的时候更加清晰,以及在重复的情况下行或行的填充情况。我会建议在你的例子中显示中间数据框(这也可能帮助你解决头部问题) – Chris
我添加了更新2. – user2543622
这就是我的想法 - 所以这看起来违反了你的填充原则。第8行不应该是'tim sub'吗? – Chris