J'ai un cadre de données
a <- runif (10)
b <- letters [1:10]
c <- c(rep ("A-B", 4), rep("A_C", 6))
data1 <- data.frame (a, b, c)
data1
Et je veux remplacer _
en A_C de la colonne c pour -
avoir un cadre de données comme data2:
z <- c(rep ("A-B", 4), rep("A-C", 6))
data2 <- data.frame (a, b, z)
data2
Savez-vous comment je peux faire ça?
Utilisez gsub
:
data1$c <- gsub('_', '-', data1$c)
data1
a b c
1 0.34597094 a A-B
2 0.92791908 b A-B
3 0.30168772 c A-B
4 0.46692738 d A-B
5 0.86853784 e A-C
6 0.11447618 f A-C
7 0.36508645 g A-C
8 0.09658292 h A-C
9 0.71661842 i A-C
10 0.20064575 j A-C
Si votre variable data1$c
est un facteur, il est plus efficace de modifier les libellés des niveaux de facteurs que de créer un nouveau vecteur de caractères:
levels(data1$c) <- sub("_", "-", levels(data1$c))
a b c
1 0.73945260 a A-B
2 0.75998815 b A-B
3 0.19576725 c A-B
4 0.85932140 d A-B
5 0.80717115 e A-C
6 0.09101492 f A-C
7 0.10183586 g A-C
8 0.97742424 h A-C
9 0.21364521 i A-C
10 0.02389782 j A-C
Vous pouvez utiliser la bibliothèque stringr
:
library('stringr')
a <- runif(10)
b <- letters[1:10]
c <- c(rep('A-B', 4), rep('A_B', 6))
data <- data.frame(a, b, c)
data
# a b c
# 1 0.19426707 a A-B
# 2 0.12902673 b A-B
# 3 0.78324955 c A-B
# 4 0.06469028 d A-B
# 5 0.34752264 e A_C
# 6 0.55313288 f A_C
# 7 0.31264280 g A_C
# 8 0.33759921 h A_C
# 9 0.72322599 i A_C
# 10 0.25223075 j A_C
data$c <- str_replace_all(data$c, '_', '-')
data
# a b c
# 1 0.19426707 a A-B
# 2 0.12902673 b A-B
# 3 0.78324955 c A-B
# 4 0.06469028 d A-B
# 5 0.34752264 e A-C
# 6 0.55313288 f A-C
# 7 0.31264280 g A-C
# 8 0.33759921 h A-C
# 9 0.72322599 i A-C
# 10 0.25223075 j A-C
Notez que cela change les variables factorisées en caractère.
chartr
est également pratique pour ces types de substitutions:
chartr("_", "-", data1$c)
# [1] "A-B" "A-B" "A-B" "A-B" "A-C" "A-C" "A-C" "A-C" "A-C" "A-C"
Ainsi, vous pouvez simplement faire:
data1$c <- chartr("_", "-", data1$c)