Trong khung dữ liệu lớn ("myfile") có bốn cột, tôi phải thêm cột thứ năm với các giá trị có điều kiện dựa trên bốn cột đầu tiên.
Thích các câu trả lời có dplyr
và mutate
, chủ yếu là do tốc độ của nó trong các tập dữ liệu lớn.
Khung dữ liệu của tôi trông như thế này:
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
...
Các giá trị của cột thứ năm (V5) dựa trên một số quy tắc có điều kiện:
if (V1==1 & V2!=4) {
V5 <- 1
} else if (V2==4 & V3!=1) {
V5 <- 2
} else {
V5 <- 0
}
Bây giờ tôi muốn sử dụng mutate
hàm để sử dụng các quy tắc này trên tất cả các hàng (để tránh vòng lặp chậm). Một cái gì đó như thế này (và vâng, tôi biết nó không hoạt động theo cách này!):
myfile <- mutate(myfile, if (V1==1 & V2!=4){V5 = 1}
else if (V2==4 & V3!=1){V5 = 2}
else {V5 = 0})
Đây sẽ là kết quả:
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
Làm thế nào để làm điều này trong dplyr
?
NA
, (NaN, +Inf, -Inf
)?