Dplyr: sütun bir dize içeriyorsa bir değişken nasıl değiştirilir?


Bir sütun belirli bir dize içeriyorsa, bir değişkeni değiştirmek için dplyr’de aşağıdaki temel sözdizimini kullanabilirsiniz:

 library (dplyr)

df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))

Bu özel sözdizimi, sütun adında “starter” dizesini içeren veri çerçevesindeki her değişkene Scale() işlevini uygular.

Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.

Örnek: sütun bir dize içeriyorsa değişkeni değiştirin

R’de aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E', 'F'),
                 starter_points=c(22, 26, 25, 13, 15, 22),
                 starter_assists=c(4, 5, 10, 14, 12, 10),
                 bench_points=c(7, 7, 9, 14, 13, 10),
                 bench_assists=c(2, 5, 5, 4, 9, 14))

#view data frame
df

  team starter_points starter_assists bench_points bench_assists
1 to 22 4 7 2
2 B 26 5 7 5
3 C 25 10 9 5
4 D 13 14 14 4
5 E 15 12 13 9
6 F 22 10 10 14

Sütun adında “starter” dizesini içeren veri çerçevesindeki her değişkene Scale() işlevini uygulamak için aşağıdaki sözdizimini kullanabiliriz.

 library (dplyr)

#apply scale() function to each variable that contains 'starter' in the name
df %>% mutate_at(vars(contains(' starter ')), ~ (scale(.) %>% as. vector ))

  team starter_points starter_assists bench_points bench_assists
1 A 0.2819668 -1.3180158 7 2
2 B 1.0338784 -1.0629159 7 5
3 C 0.8459005 0.2125832 9 5
4 D -1.4098342 1.2329825 14 4
5 E -1.0338784 0.7227828 13 9
6 F 0.2819668 0.2125832 10 14

Bu sözdizimini kullanarak, “başlangıç” içeren her sütunu, değerlerinin ortalaması 0 ve standart sapması 1 olacak şekilde ölçeklendirmek için Scale() işlevini uygulayabildik.

Aşağıdaki sütunların değiştirildiğini unutmayın:

  • başlangıç_noktaları
  • starter_assists

Diğer tüm sütunlar değişmeden kaldı.

Ayrıca bu sözdizimini kullanarak istediğimiz herhangi bir işlevi uygulayabileceğimizi unutmayın.

Önceki örnekte, her sütunu adındaki “starter” dizesiyle ölçeklendirmeyi seçtik.

Ancak adında “başlangıç” bulunan her sütun için değerleri ikiyle çarpmak gibi daha basit bir şey yapabiliriz:

 library (dplyr)

#multiply values by two for each variable that contains 'starter' in the name
df %>% mutate_at(vars(contains(' starter ')), ~ (. * 2 ))

  team starter_points starter_assists bench_points bench_assists
1 A 44 8 7 2
2 B 52 10 7 5
3 C 50 20 9 5
4 D 26 28 14 4
5 E 30 24 13 9
6 F 44 20 10 14

Starter_points ve starter_assists sütunlarının değerlerinin ikiyle çarpıldığını, diğer tüm sütunların ise değişmediğini unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde dplyr’de diğer genel görevlerin nasıl gerçekleştirileceği açıklanmaktadır:

Dplyr kullanarak satırlar nasıl silinir
Dplyr kullanarak dizine göre sütunlar nasıl seçilir
Belirli bir dizeyi içeren satırları dplyr kullanarak nasıl filtreleyebilirim?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir