2017-01-13 5 views
0

Ich habe zwei Spalten 'Titel', die Daten wie 'Was ist Physik?' und eine weitere Spalte 'Inhalt', die Daten wie 'Physik ist eine Studie von ....' enthält. Ich möchte den gemeinsamen Text von beiden wie ['ist', 'Physik']. Dies muss für alle Datenzeilen durchgeführt werden. Wie kann ich das mit R erreichen?Wie findet man eine gemeinsame Textform 2 Spalte mit String vlaues?

Grüße,

Antwort

1

Ich glaube, Sie so etwas wie die folgenden wollen:

df <- data.frame(col1=c('what is physics?', 'set cover is NP hard', 'abstract algebra'), 
       col2=c('Physics is the study of...', 'Example of an NP complete problem is 3-SAT', 'linear algebra'), 
       stringsAsFactors = FALSE) 
#  col1    col2 
# 1  what is physics? Physics is the study of... 
# 2 set cover is NP hard Example of an NP complete problem is 3-SAT 
# 3  abstract algebra linear algebra 

apply(df, 1, function(x) intersect(tolower(unlist(strsplit(gsub('[^a-zA-Z\\s]+', ' ', x[1]), split=' '))), 
           tolower(unlist(strsplit(gsub('[^a-zA-Z\\s]+', ' ', x[2]), split=' '))))) 

#[[1]] 
#[1] "is"  "physics" 

#[[2]] 
#[1] "is" "np" 

#[[3]] 
#[1] "algebra" 
+0

Er sagt: "Fehler bei fehlenden oder (strsplit (gsub (" [^ a-zA-Z \\ s]“, "", x [2])), split = ""): unbenutztes Argument (split = "") " – AYa

+0

können Sie das bitte jetzt überprüfen? Es gab einen Tippfehler. –

Verwandte Themen