我有一个名为df的数据框架,它是关于西班牙一家重要报纸《先锋报》的文章的。重点是,我想提取每篇文章属于哪个类别。仔细查看提供的链接,我意识到存在一种重复模式,下面是一个例子:
status_link
www.lavanguardia.com/de-moda/moda/infantil/20150928/54437701110/freya-fossaceco-it-girl-8-meses.html
www.lavanguardia.com/local/barcelona/20150927/54437681718/resultados-elecciones-barcelona.html
www.lavanguardia.com/ciencia/20150928/54436850805/metastasis-cerebro-perfil-genetico-tratamiento-vall-d-hebron.html
videos.lavanguardia.com/politica/elecciones-catalanas/20150928/54437688908/gobierno-debe-reaccionar-antes-elecciones-generales.html
www.lavanguardia.com/economia/20150928/54436887975/audi-millones-coche-dieselgate.html
www.lavanguardia.com/vida/20150928/54437702392/claves-sobreexponer-hijos-internet.html
www.lavanguardia.com/ciencia/20150928/54437643626/superluna-roja-de-sangre.html
注意,第一个斜杠后的第一个单词对应于类别(西班牙语):Moda(时尚)、Local、science、economics、life等。
www.lavanguardian.com/de-moda/moda/infertil/20150928/544377001110/freya-fossaceco-it-girl-8-meses.html
www.lavangardian.com/local/barcelona/20150927/54437681718/resultados-elecciones-barcelona.html
我想提取这些单词中的每一个,并在每个链接旁边创建一个新变量,为每个链接分配相应的类别。恐怕我不知道可能有多少类别,但这种模式是反复出现的。请注意,有时链接会有所不同,请参阅此处发布的第4个链接,但它仍然保持相同的结构。
我一直在尝试这里、这里和这里的所有建议,但在这种情况下,我不太清楚如何实现包regex(或其他可能有用的东西)。
如果有任何建议,我将不胜感激!
编辑
我把数据上传到这里,这样你就可以使用它了。我感兴趣的专栏是:status_link
https://www.dropbox.com/s/dot6iq9zhicxh1e/LaVanguardia_facebook_statuses.csv?dl=0
您可以尝试此(regex方法)
> x <- c("www.lavanguardia.com/de-moda/moda/infantil/20150928/54437701110/freya-fossaceco-it-girl-8-meses.html","www.lavanguardia.com/local/barcelona/20150927/54437681718/resultados-elecciones-barcelona.html","www.lavanguardia.com/ciencia/20150928/54436850805/metastasis-cerebro-perfil-genetico-tratamiento-vall-d-hebron.html","videos.lavanguardia.com/politica/elecciones-catalanas/20150928/54437688908/gobierno-debe-reaccionar-antes-elecciones-generales.html","www.lavanguardia.com/economia/20150928/54436887975/audi-millones-coche-dieselgate.html","www.lavanguardia.com/vida/20150928/54437702392/claves-sobreexponer-hijos-internet.html","www.lavanguardia.com/ciencia/20150928/54437643626/superluna-roja-de-sangre.html")
> y = sub("^[^\/]+\/([^\/]+).*$", "\1", x)
> data.frame(x, y)
x y
#1 www.lavanguardia.com/de-moda/moda/infantil/20150928/54437701110/freya-fossaceco-it-girl-8-meses.html de-moda
#2 www.lavanguardia.com/local/barcelona/20150927/54437681718/resultados-elecciones-barcelona.html local
#3 www.lavanguardia.com/ciencia/20150928/54436850805/metastasis-cerebro-perfil-genetico-tratamiento-vall-d-hebron.html ciencia
#4 videos.lavanguardia.com/politica/elecciones-catalanas/20150928/54437688908/gobierno-debe-reaccionar-antes-elecciones-generales.html politica
#5 www.lavanguardia.com/economia/20150928/54436887975/audi-millones-coche-dieselgate.html economia
#6 www.lavanguardia.com/vida/20150928/54437702392/claves-sobreexponer-hijos-internet.html vida
#7 www.lavanguardia.com/ciencia/20150928/54437643626/superluna-roja-de-sangre.html ciencia
根据您的意见,尝试
> tmp <- read.csv("LaVanguardia_facebook_statuses.csv")
> sub("^(?:https?:\/\/)?[^\/]+\/([^\/]+).*$", "\1", tmp[,5])
#[1] "gente" "series" "deportes" "television" "vangdata" "series" "lacontra" "participacion" "vida" "comer"
#[11] "vivo" "local" "politica" "sucesos" "natural" "hemeroteca" "natural" "local" "vida" "fans"
#[21] "television" "viral" "natural" "deportes" "vida"