Jeroen:
J'ai un dataframe avec une colonne qui contient des entrées de texte libre sur des années d'éducation. Des entrées de texte libre, je veux extraire tous les nombres et les additionner.
Exemple: data_en $ educationTxt [1] donne "6 l'école primaire 10 highschool"
Avec le code suivant je peux extraire les nombres et les additionner.
library(stringr)
x <- as.numeric(str_extract_all(data_en$education[1], "[0-9A]+")[[1]])
x <- as.vector(x)
x <- sum(x)
Cependant, je voudrais idéalement faire pour toutes les entrées de texte libre (chaque rangée) puis ajouter les résultats à la trame de données par ligne (dans une variable telle que data_en $ educationNum). Je suis un peu coincé sur la façon de procéder.
nurandi:
Vous pouvez utiliser sapply
:
data_en$educationNum <- sapply(str_extract_all(data_en$education, "[0-9]+"),
function(i) sum(as.numeric(i)))
data_en
# education educationNum
# 1 6 primary school 10 highschool 16
# 2 10 primary school 2 highschool 12
# 3 no school 0
Les données
data_en <- data.frame(education = c("6 primary school 10 highschool",
"10 primary school 2 highschool",
"no school"))