Cartographie du sujet de la revue dans R

1
Suhas U 2020-06-23 04:50.

J'ai deux ensembles de données, les données d'examen et les données de sujet

Code de saisie de mes données d'examen

structure(list(Review = structure(2:1, .Label = c("Canteen Food could be improved", 
"Sports and physical exercise need to be given importance"), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))

Code de saisie de mes données de sujet

structure(list(word = structure(2:1, .Label = c("canteen food", 
"sports and physical"), class = "factor"), Topic = structure(2:1, .Label = c("Canteen", 
"Sports "), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))

Dput de ma sortie souhaitée , je veux rechercher les mots qui apparaissent dans les données de sujet et les mapper aux données de révision

structure(list(Review = structure(2:1, .Label = c("Canteen Food could be improved", 
"Sports and physical exercise need to be given importance"), class = "factor"), 
    Topic = structure(2:1, .Label = c("Canteen", "Sports "), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))

2 answers

2
r2evans 2020-06-23 06:00.

Ce que vous voulez, c'est quelque chose comme une jointure floue. Voici une force brute à la recherche d'une sous-chaîne stricte (mais insensible à la casse):

library(dplyr)
review %>%
  full_join(topic, by = character()) %>% # full cartesian expansion
  group_by(word) %>%
  mutate(matched = grepl(word[1], Review, ignore.case = TRUE)) %>%
  ungroup() %>%
  filter(matched) %>%
  select(-word, -matched)
# # A tibble: 2 x 2
#   Review                                                   Topic    
#   <fct>                                                    <fct>    
# 1 Sports and physical exercise need to be given importance "Sports "
# 2 Canteen Food could be improved                           "Canteen"

C'est un peu de force brute en ce sens qu'il fait une jointure cartésienne des cadres avant de tester avec grepl, mais ... vous ne pouvez pas vraiment éviter certaines parties de cela.

Vous pouvez également utiliser le fuzzyjoinpackage, qui est destiné aux jointures sur des objets flous (nommés de manière appropriée).

fuzzyjoin::regex_left_join(review, topic, by = c(Review = "word"), ignore_case = TRUE)
# Warning: Coercing `pattern` to a plain character vector.
#                                                     Review                word   Topic
# 1 Sports and physical exercise need to be given importance sports and physical Sports 
# 2                           Canteen Food could be improved        canteen food Canteen

L'avertissement est que vos colonnes sont des factors, non character, cela devrait être inoffensif. Si vous souhaitez masquer l'avertissement, vous pouvez utiliser suppressWarnings(un peu fort); si vous voulez éviter l'avertissement, convertissez toutes les colonnes applicables de factoren character(par exemple topic[] <- lapply(topic, as.character), même pour review$Review, mais modifiez-le si vous avez des colonnes numériques).

3
user13214050 2020-06-23 06:22.

Amateur ici. Je l'ai fait en utilisant la base R, pas dplyr, car je ne suis pas le meilleur pour les fonctions de jointure.

Ci-dessous, initialisez votre dfs. J'ai ajouté plus d'exemples pour m'assurer que tout fonctionnait correctement. Également choisi de ne pas utiliser de facteurs, rend les choses compliquées pour l'attribution de chaînes plus tard.

# initialize your dfs
review <- data.frame("Review" = c("Canteen Food could be improved", 
                                  "Sports and physical exercise need to be given importance",
                                  "canteen food x2",
                                  "this is my sports and physical",
                                  "SPORTS AND PHYSICAL",
                                  "meme",
                                  "canteen and food",
                                  "this is my meme",
                                  "memethis"
                                  ),
                     stringsAsFactors = F)

topic <- data.frame("word" = c("canteen food", "sports and physical", "meme"), 
                    "Topic" = c("Canteen", "Sports", "meme_cat"),
                    stringsAsFactors = F)

Ensuite, utilisez simplement des boucles for imbriquées pour parcourir les mots souhaités, trouver les chaînes correspondantes et attribuer le sujet approprié. Et tout initialisé AVANT la boucle for.

# initialize new column to write into in loop
review <- cbind(review, "Topic" = rep(NA, nrow(review)))

# initialize before for loop
a <- rep(F, nrow(topic))

# loop over words in topic and find string matches in review. if so, assign review$topic = Topic for (i in 1:nrow(topic)) { for(j in 1:nrow(review)) { a[j] <- grepl(topic$word[i], review$Review[j], ignore.case=T) } if (any(a)) { review$Topic[a] = topic$Topic[i]
  }

review
#                                                    Review    Topic
#1                           Canteen Food could be improved  Canteen
#2 Sports and physical exercise need to be given importance   Sports
#3                                          canteen food x2  Canteen
#4                           this is my sports and physical   Sports
#5                                      SPORTS AND PHYSICAL   Sports
#6                                                     meme meme_cat
#7                                         canteen and food     <NA>
#8                                          this is my meme meme_cat
#9                                                 memethis meme_cat

Related questions

MORE COOL STUFF

Reba McEntire a révélé la tradition de Noël «amusante» qu'elle partage avec son fils Shelby Blackstock: «Nous rions beaucoup»

Reba McEntire a révélé la tradition de Noël «amusante» qu'elle partage avec son fils Shelby Blackstock: «Nous rions beaucoup»

Découvrez les traditions de Noël que Reba McEntire partage avec son fils, Shelby Blackstock, qui, selon elle, pourraient laisser certains confus.

Meghan Markle s'est liée avec Mariah Carey pour coiffer leurs cheveux naturels

Meghan Markle s'est liée avec Mariah Carey pour coiffer leurs cheveux naturels

Apprenez-en plus sur la façon dont Meghan Markle et Mariah Carey se sont liées sur leurs cheveux naturels dans un épisode du podcast "Archetypes" de Meghan.

Le prince Harry " garde espoir " de pouvoir arranger les choses avec sa famille : " Il aime son père et son frère "

Le prince Harry " garde espoir " de pouvoir arranger les choses avec sa famille : " Il aime son père et son frère "

Découvrez ce qu'une source a affirmé que le prince Harry espérait concernant les relations avec sa famille, en particulier le roi Charles et le prince William.

Brennon Lemieux, star de "Love Is Blind", répond aux accusations de violence conjugale

Brennon Lemieux, star de "Love Is Blind", répond aux accusations de violence conjugale

Un rapport de police accusant Brennon, star de "Love Is Blind", de violence domestique a récemment fait surface. Maintenant, Brennon a répondu aux réclamations.

Qui a dit ça? Le quiz des doubleurs

Qui a dit ça? Le quiz des doubleurs

Il y a le jeu d'acteur, puis il y a le doublage. Les deux sont difficiles à leur manière. Que savez-vous de ces légendes dans le domaine ?

Les Philippines organisent la plus longue fête de Noël au monde

Les Philippines organisent la plus longue fête de Noël au monde

Peut-être qu'aucun pays sur Terre n'aime Noël plus que les Philippines. Les résidents y célèbrent les vacances pendant quatre mois solides. Voici pourquoi.

L'intrication quantique est le phénomène le plus étrange de la physique, mais qu'est-ce que c'est ?

L'intrication quantique est le phénomène le plus étrange de la physique, mais qu'est-ce que c'est&nbsp;?

Einstein a qualifié ce phénomène d'"action effrayante à distance" et les physiciens viennent de remporter le prix Nobel pour leurs travaux, mais qu'est-ce que l'intrication quantique ?

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Un juge blanc condamné à la probation pour fraude électorale dans le même comté où une femme noire a reçu 5 ans

Un juge blanc condamné à la probation pour fraude électorale dans le même comté où une femme noire a reçu 5 ans

Russ Casey En ce moment, il y a une femme noire assise en prison, lisant l'histoire d'un juge texan qui a été reconnu coupable du même crime qu'elle a commis. Elle a probablement remarqué que le juge avait été condamné à cinq ans de probation dans le même comté qui l'avait condamnée à cinq ans de prison.

Meh Car Monday: voici le vide tranquille de la Toyota Avalon

Meh Car Monday: voici le vide tranquille de la Toyota Avalon

Normalement, les voitures que je choisis pour Meh Car Monday n'ont jamais été conçues à l'origine pour être meh, en tant que telles. Mehness leur est juste arrivé.

Mettez un couvercle dessus. En fait, mettez un couvercle sur tout. Obtenez 12 couvercles de cuisine extensibles en silicone pour 14 $. [Exclusif]

Mettez un couvercle dessus. En fait, mettez un couvercle sur tout. Obtenez 12 couvercles de cuisine extensibles en silicone pour 14 $. [Exclusif]

Lot de 12 couvercles extensibles en silicone Tomorrow's Kitchen | 14 $ | Amazone | Code promo 20OFFKINJALids sont essentiellement les chaussettes de la cuisine ; se perd toujours, laissant des conteneurs orphelins qui ne pourront plus jamais être refermés. Mais que se passerait-il si vos couvercles pouvaient s'étirer et s'adapter à tous vos restes de récipients, casseroles, poêles et même de gros fruits tranchés ? Vous n'aurez plus jamais à vous soucier de perdre ce couvercle très spécifique.

Dites-nous vos meilleurs hacks à Washington, DC

Dites-nous vos meilleurs hacks à Washington, DC

Nous avons piraté quelques villes industrielles dans cette colonne, comme Los Angeles et Las Vegas. Il est maintenant temps pour une ville complexe militaro-industrielle.

Le patinage artistique américain "frustré" par l'absence de décision finale dans l'épreuve par équipe, demande une décision équitable

Le patinage artistique américain "frustré" par l'absence de décision finale dans l'épreuve par équipe, demande une décision équitable

L'équipe attend les médailles qu'elle a remportées aux Jeux olympiques d'hiver de 2022 à Pékin, alors qu'un cas de dopage impliquant la patineuse artistique russe Kamila Valieva est en cours de règlement.

Les acheteurs d'Amazon disent qu'ils dorment «comme un bébé choyé» grâce à ces taies d'oreiller en soie qui coûtent aussi peu que 10 $

Les acheteurs d'Amazon disent qu'ils dorment «comme un bébé choyé» grâce à ces taies d'oreiller en soie qui coûtent aussi peu que 10 $

Des milliers d'acheteurs Amazon recommandent la taie d'oreiller en soie Mulberry, et elle est en vente en ce moment. La taie d'oreiller en soie est disponible en plusieurs couleurs et aide à garder les cheveux doux et la peau claire. Achetez les taies d'oreiller en soie alors qu'elles sont jusqu'à 46% de réduction sur Amazon

Un professeur de l'Université Purdue arrêté pour avoir prétendument vendu de la méthamphétamine et proposé des femmes pour des faveurs sexuelles

Un professeur de l'Université Purdue arrêté pour avoir prétendument vendu de la méthamphétamine et proposé des femmes pour des faveurs sexuelles

Le département de police de Lafayette a commencé à enquêter sur un professeur de l'Université Purdue en décembre après avoir reçu plusieurs plaintes concernant un "homme suspect s'approchant de femmes".

Concept Drift : le monde change trop vite pour l'IA

Concept Drift : le monde change trop vite pour l'IA

Tout comme le monde qui nous entoure, la langue est en constante évolution. Alors que dans les époques précédentes, les changements de langue se produisaient sur des années, voire des décennies, cela peut maintenant se produire en quelques jours, voire quelques heures.

L'Inde me botte le cul

L'Inde me botte le cul

Je suis de retour pour la première fois en six ans. Je ne peux pas vous dire depuis combien de temps j'attends ça.

Precios accesibles, nuestro aprendizaje desde la perspectiva iOS

Precios accesibles, nuestro aprendizaje desde la perspectiva iOS

Cómo mejoramos la accesibilidad de nuestro componente de precio, y cómo nos marcó el camino hacia nuevos saberes para nuestro sistema de diseño. Por Ana Calderon y Laura Sarmiento Leer esta historia en inglés.

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

Language