Mutasyon, mutasyon koşullu olduğunda kullanılabilir (belirli sütun değerlerinin değerlerine bağlı olarak)?
Bu örnek ne demek istediğimi göstermeye yardımcı oluyor.
structure(list(a = c(1, 3, 4, 6, 3, 2, 5, 1), b = c(1, 3, 4,
2, 6, 7, 2, 6), c = c(6, 3, 6, 5, 3, 6, 5, 3), d = c(6, 2, 4,
5, 3, 7, 2, 6), e = c(1, 2, 4, 5, 6, 7, 6, 3), f = c(2, 3, 4,
2, 2, 7, 5, 2)), .Names = c("a", "b", "c", "d", "e", "f"), row.names = c(NA,
8L), class = "data.frame")
a b c d e f
1 1 1 6 6 1 2
2 3 3 3 2 2 3
3 4 4 6 4 4 4
4 6 2 5 5 5 2
5 3 6 3 3 6 2
6 2 7 6 7 7 7
7 5 2 5 2 6 5
8 1 6 3 6 3 2
Yeni bir sütun g oluşturmak için dplyr paketini kullanarak benim sorunum için bir çözüm bulmak umuyordum (ve evet bu kod çalışmasını biliyorum, ama sanırım amacı açık yapar):
library(dplyr)
df <- mutate(df,
if (a == 2 | a == 5 | a == 7 | (a == 1 & b == 4)){g = 2},
if (a == 0 | a == 1 | a == 4 | a == 3 | c == 4) {g = 3})
Aradığım kodun sonucu bu özel örnekte bu sonucu olmalıdır:
a b c d e f g
1 1 1 6 6 1 2 3
2 3 3 3 2 2 3 3
3 4 4 6 4 4 4 3
4 6 2 5 5 5 2 NA
5 3 6 3 3 6 2 NA
6 2 7 6 7 7 7 2
7 5 2 5 2 6 5 2
8 1 6 3 6 3 2 3
Herkes bunu dplyr içinde nasıl yapılacağı hakkında bir fikri var mı? Bu veri çerçevesi sadece bir örnektir, ele aldığım veri çerçeveleri çok daha büyük. Hızı nedeniyle dplyr kullanmaya çalıştım, ama belki de bu sorunu ele almanın daha iyi yolları var mı?
dplyr::case_when()
birifelse
,