Tôi có hai cột số score.a
và score.b
. Tôi muốn tạo một biến mới score.c
chuyển điểm số quan sát được từ a hoặc b, nhưng khi chúng được quan sát thấy ở cả hai, tôi cần lấy mức trung bình.Tạo cột mới dựa trên hai cột khác, nhưng trung bình khi được quan sát trong cả hai
help <- data.frame(deid = c(5, 7, 12, 15, 25, 32, 42, 77, 92, 100, 112, 113),
score.a = c(NA, 2, 2, 2, NA, NA, NA, NA, NA, NA, 2, NA),
score.b = c(4, NA, NA, 4, 4, 4, NA, NA, 4, 4, NA, 4))
tạo
deid score.a score.b
1 5 NA 4
2 7 2 NA
3 12 2 NA
4 15 2 4
5 25 NA 4
6 32 NA 4
7 42 NA NA
8 77 NA NA
9 92 NA 4
10 100 NA 4
11 112 2 NA
12 113 NA 4
Và tôi hy vọng sẽ tạo ra một df trông giống như
deid score.a score.b score.c
1 5 NA 4 4
2 7 2 NA 2
3 12 2 NA 2
4 15 2 4 3
5 25 NA 4 4
6 32 NA 4 4
7 42 NA NA NA
8 77 NA NA NA
9 92 NA 4 4
10 100 NA 4 4
11 112 2 NA 2
12 113 NA 4 4
ví dụ, trong hàng 4 phải mất giá trị trung bình.
Nỗ lực của tôi đã sử dụng help %>% group_by(deid) %>% mutate(score.c = (score.a + score.b)/2)
nhưng điều này chỉ xử lý dữ liệu được quan sát thấy trong cả hai cột.
mắc kẹt trên dplyr và quên mất rowMeans ... cảm ơn, @akrun! – bpace
@bpace Nếu bạn cần làm trong 'dplyr'. Thử 'help%>% mutate (val = (pmax (điểm.a, score.b, na.rm = TRUE) + pmin (điểm.a, score.b, na.rm = TRUE))/2)' – akrun
tốt để biết, cảm ơn ... không quen thuộc với pmax() và pmin() vì vậy tôi sẽ kiểm tra xem chúng ra – bpace