ในดาต้าเฟรมขนาดใหญ่ ("myfile") ที่มีสี่คอลัมน์ฉันต้องเพิ่มคอลัมน์ที่ห้าโดยมีค่าตามเงื่อนไขตามสี่คอลัมน์แรก
ต้องการคำตอบที่มีdplyr
และmutate
ส่วนใหญ่เป็นเพราะความเร็วในชุดข้อมูลขนาดใหญ่
ดาต้าเฟรมของฉันมีลักษณะดังนี้:
V1 V2 V3 V4
1 1 2 3 5
2 2 4 4 1
3 1 4 1 1
4 4 5 1 3
5 5 5 5 4
...
ค่าของคอลัมน์ที่ห้า (V5) ขึ้นอยู่กับกฎเงื่อนไขบางประการ:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
ตอนนี้ฉันต้องการใช้mutate
ฟังก์ชันเพื่อใช้กฎเหล่านี้กับทุกแถว (เพื่อหลีกเลี่ยงการวนซ้ำที่ช้า) อะไรทำนองนี้ (และใช่ฉันรู้ว่ามันไม่ได้ผล!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
นี่ควรเป็นผลลัพธ์:
V1 V2 V3 V4 V5
1 1 2 3 5 1
2 2 4 4 1 2
3 1 4 1 1 0
4 4 5 1 3 0
5 5 5 5 4 0
วิธีการทำในdplyr
?
NA
(NaN, +Inf, -Inf
)?