2016-03-31 9 views
1

Metin içeren bir sütunun yanı sıra sıra değişkenleri olan bir veri kümesiyle çalışıyorum. Genel olarak, bir metin madenciliği uygulamasının sonuçları olan ve tablo yapısını koruyan sütunlar eklemek istiyorum.(Bağlamsal) metin madenciliği işlemlerinin sonuçları olan sütunları ekleme

Örneğin, i CSV dosyası data-subset.csv içe ve bir veri çerçevesi datacsv

datacsv=read.csv("data-subset.csv", header=TRUE,sep=";") 

tekst metni içeren üçüncü sütun adlandırılan elde edilmiştir. Bu metindeki sayıları (fve) bağlamında düzenli olarak (0 ile 1 arasında olacak) aramak ve bu sayıları fte sütun olarak eklemek istiyorum. Bkz: tm gibi

> luid titel   tekst 
>1 47300 docent wiskunde De Stichting Openbaar Voortgezet Onderwijs 0,65 
          fte voltijd niveau: havo vwo 
>2 43701 docent natuurkunde Speciaal onderwijs fulltime 2015 2016 fte 0,77 Haarlem 
>3 43702 assistent  basisonderwijs Amsterdam fte 0,5 

i kurduktan paketleri ve tatmin edici sonuçlar olmadan quanteda

install.packages("tm", "quantada") library ("tm") library ("quanteda")

, böyle

datacsv ["fte"]<- kwic(datacsv$"tekst", "fte", 4) 
olarak, çeşitli kwic ifadeleri kullanmaya çalıştık

Metin sütununu nasıl kullanacağımı ve sonuçları bir sütun (veya birden çok sütun) olarak nasıl ekleyeceğini bilen var mı?

Teşekkürler!

+0

Sayıları olan dizeleri var ve sayıları çıkarmak istiyor musunuz? Sorularınıza tekrarlanabilir örnek eklemelisiniz. [Bu] bir göz atın (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Sotos

+2

Stackoverflow'a Hoş Geldiniz! Lütfen her ikinize bir [mcve] –

+0

sağlayın. Sorumu düzenledim. Umarım şimdi daha kullanılabilir. –

cevap

0

Bu?

library(stringr) 
datacsv$fte <- str_extract_all(sapply(strsplit(datacsv$tekst, "fte "), "[", 2), '\\d+\\.*\\d*') 
+0

Bu, doğru yönde. Ancak, şu anda karşılaştığım sorun, diğer vakaların birden fazla sayı içermesidir. Yani, örneğin, 'tekst' değişken de bir yıl içerir. Bu, R'nin sadece 'fte' teriminin çevresinde bulunan sayıları çıkarmasının zorunlu olduğu anlamına gelir. Ayrıca, "fte" nin durumlar arasında rastgele konumlarda bulunduğunu da göz önünde bulundurun. –

0

Belki bu çalışır?

library(dplyr)  
    mutate(datacsv, 
      fte = as.numeric(regmatches(tekst,regexpr("[[:digit:]]+\\.[[:digit:]]+", 
                tekst))))