我的問題是基於此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