-1
請問我有以下數據框。需要幫助刪除不一致的行
從數據框中,我的目標是移除3個月後不會進行的Intake。這是攝入日期與3個月之間的差異應該一致。
第一環路代碼用於生成D1,D2,D3如下所示
for (i in 2:(length(MyPanelBMIn3[,"UIDhmis"]))) {
if ((MyPanelBMIn3[i,"UIDhmis"]== MyPanelBMIn3[(i-1),"UIDhmis"]) & MyPanelBMIn3[i, "Freq"] == MyPanelBMIn3[i-1, "Freq"]) {
MyPanelBMIn3[i,"dd1"] <- MyPanelBMIn3[i,"Date2"]- MyPanelBMIn3[i-1, "Date2"]
MyPanelBMIn3[i,"dd2"] <- MyPanelBMIn3[i,"Date2"]- MyPanelBMIn3[i+1, "Date2"]
MyPanelBMIn3[i,"dd3"] <- MyPanelBMIn3[i-1,"Date2"]- MyPanelBMIn3[i+1, "Date2"]
} else
if ((MyPanelBMIn3[i,"UIDhmis"]== MyPanelBMIn3[(i-1),"UIDhmis"]) & MyPanelBMIn3[i, "Freq"] != MyPanelBMIn3[i-1, "Freq"]){
MyPanelBMIn3[i,"dd1"] <- MyPanelBMIn3[i,"Date2"]- MyPanelBMIn3[i-1, "Date2"]
MyPanelBMIn3[i,"dd2"] <- MyPanelBMIn3[i,"Date2"]- MyPanelBMIn3[i+1, "Date2"]
}
}
DATA:
UIDhmis CID Freq Date Index d1 d2 d3
1 100 Intake 22/09/2014 1 NA NA NA
1 100 Intake 16/04/2012 2 -889 -85 804
1 100 03 Month 10/07/2012 3 85 -84 NA
2 214 Intake 02/09/2013 1 NA NA NA
2 214 Intake 05/04/2013 2 -150 -241 -91
2 214 03 Month 02/12/2013 3 241 -90 NA
3 301 Intake 03/11/2015 1 NA NA NA
3 301 Intake 15/02/2015 2 -261 -359 -98
3 740 03 Month 09/02/2016 3 359 -6 NA
下面是用來比較D1中的代碼,d2和d3是能夠確定在第一個和第二個「攝入量」之間哪條線落下,我遇到下面給出的絕對值上的誤差
for (i in 2:(length(MyPanelBMIn5[, "UIDhmis"]))) {
if ((MyPanelBMIn5[i, "UIDhmis"] == MyPanelBMIn5[(i-1), "UIDhmis"]) & MyPanelBMIn5[i, "Freq"] == MyPanelBMIn5[(i-1), "Freq"] & abs(MyPanelBMIn5[i-1, "d1"]) > 100 & abs(MyPanelBMIn5[i, "d2"]) <= 100) {
MyPanelBMIn6 <- with(MyPanelBMIn5, MyPanelBMIn5$UIDhmis != i-1)
}else
if ((MyPanelBMIn5[i, "UIDhmis"] == MyPanelBMIn5[i+1, "UIDhmis"]) & MyPanelBMIn5[i, "Freq"] == MyPanelBMIn5[i+1, "Freq"] & abs(MyPanelBMIn5[i+1, "d1"]) < abs(MyPanelBMIn5[(i+1), "d2"])) {
MyPanelBMIn6 <- with(MyPanelBMIn5, MyPanelBMIn5$UIDhmis != i)
}else if
((MyPanelBMIn5[i, "UIDhmis"] == MyPanelBMIn5[(i+1), "UIDhmis"]) & MyPanelBMIn5[i, "Freq"] == MyPanelBMIn5[(i+1), "Freq"] & abs(MyPanelBMIn5[i, "d1"]) > 100 & abs(MyPanelBMIn5[i, "d2"]) > 100 & abs(MyPanelBMIn5[i, "d3"]) <= 100) {
MyPanelBMIn6 <- with(MyPanelBMIn5, MyPanelBMIn5$UIDhmis != i)
}
}
錯誤消息: 錯誤在ABS(MyPanelBMIn5 [I - 1,「D1」): 非數字參數的數學函數
目的是3個月到「03月」中除去攝入量是不。例如,我想從UIDhmis = 100中刪除第1行,因爲這個觀察距離它的「03個月」很遠。
在UIDhmis = 214中,第二個「攝入量」必須被移除,因爲它是大約五個月到「03個月」的頻率。
有人可以幫助找到我的錯誤是什麼或告訴我如何在R更好地做到這一點。我使用R版本3.3.2與Windows 7專業版。
謝謝。