2016-03-31 29 views
2

R için göreceli olarak yeniyim, lütfen benim için kolay ol.R - Veri Çerçevesine Birden Çok Değerlik 1 Sütun Satır Bölme

Bunu anlamaya çalışırken kendimi öldürüyorum.

Web sitesinden alıntıladığım dev bir metin bloğum var. O (Ben Gizlilik aşkına bazı bilgileri deđiţtirdiđiniz) şuna benzer:

> theText99 

499737 2016-03-31 10:37:29 00:00:32 SALES WORD INITIATIVE 160915 123456789101 
Person Name Completed\n499731 2016-03-31 10:36:50 00:13:50 SALES NON WORD 
INITIATIVE 160915 1234567891013 Woman Name Completed\n499726 2016-03-31 
10:36:29 00:07:57 SALES NON WORD INITIATIVE 160915 123456789101 Someone Berry 
Completed\n499672 2016-03-31 10:29:13 00:00:09 SALES WORD INITIATIVE 160915 
123456789101 Person Carr Completed\n499654 2016-03-31 10:27:16 00:00:09 SALES 
WORD INITIATIVE 160915 123456789101 Person Carr Completed\n499609 2016-03-31 
10:18:36 00:11:06 SALES WORD INITIATIVE 160915 123456789101 Person Carr 
Completed\n499601 2016-03-31 10:16:29 00:10:34 SALES WORD INITIATIVE 160915 
123456789101 FirstName Kang Completed\n499568 2016-03-31 10:10:39 00:02:31 
SALES NON WORD INITIATIVE 160915 123456789101 Person Carr Completed\n499548 
2016-03-31 10:06:40 00:07:15 SALES WORD INITIATIVE 160915 1234567891011 Pat 
Laugh Completed\n499508 2016-03-31 09:56:34 00:02:51 SALES WORD INITIATIVE 
160915 123456789101 Mark LastName Completed\n499499 2016-03-31 09:54:33 
00:00:08 SALES WORD INITIATIVE 160915 123456789101 Woman Name 
Completed\n499490 2016-03-31 09:53:04 00:04:28 SALES WORD INITIATIVE 160915 
123456789101 Person Name Completed 

Amacım veri çerçevesinin içine bu verileri ayrıştırılır.

ben bu kadar başardığımı:

çizgili metin güzel bir set sonuçlanır
> library(stringr) 
> t <- str_split(theText99, "\\n") 

..

[1] "499737 2016-03-31 10:37:29 00:00:32 SALES THING INITIATIVE 160915 123456789101 First Name Completed"
[2] "499731 2016-03-31 10:36:50 00:13:50 SALES THINGY INITIATIVE 160915 123456789101 Chelsea Hello Completed"
[3] "499726 2016-03-31 10:36:29 00:07:57 SALES THINGY INITIATIVE 160915 123456789101 Nice Name Completed"

yerde başlamıştı bir veri çerçevesi düşünce içine koyun:

> x <- as.data.frame(t) 
> t <- x[1,] # To Test on the first row 
> library(stringi) 
> library(stringr) 
> t <- as.character(t) 
> callId <- str_extract(t, "^[0-9]{6}") 
> callId 
[1] "499737" 
> callDate <- str_extract(t, "[0-9\\-]{10}") 
> callDate 
[1] "2016-03-31" 
> callDuration <- str_extract(t, "[0-9\\:?]{8}") 
> callDuration 
[1] "10:37:29" 
> callInitiative <- str_extract(t, "([A-Z]...+[A-Z]+...[0-9]+)") 
> callInitiative 
[1] "SALES BLAHBLAH INITIATIVE 160915" 
> phoneNumber <- str_extract(t, "(\\d){7,}") 
> phoneNumber 
[1] 123456789101 
> agentName <- str_extract(t, "([A-Z][a-z]+ [A-Z][a-z]+)") 
> agentName 
> FirstName LastName 

Bu kodun tutulacağını kim bilir ... Bazı değişkenlerin uzunlukları sık sık değişir.

My Soru her satırda metin son büyük, sık sık değişiklikler: Örneğin

: [3] "499726 2016-03-31 10:36:29 00:07:57 SATIŞ şeysi GİRİŞİMİ 160915 123456789101 Güzel İsim "

[3] "499726 2016-03-31 10:36:29 00:07:57 SATIŞ şeysi GİRİŞİMİ 160915 123456789101 Güzel İsim Hala bekleyen Karar"

Tamamlandı

[3] "499726 2016-03-31 10:36:29 00:07:57 SATIŞ şeysi GİRİŞİMİ 160915 123456789101 Güzel İsim Stuff başka Kaynağı arıyorum"

bölmek için en iyi yolu nedir tüm bu bilgi?

Sanırım çok fazla bölme işi yapıyor olabilirim. Bu daha iyi bir yol mu?

En öğeler nispeten aynı uzunlukta kalır:

499726-6 Sayılar 2016/03/31 - aynı tarih biçimini 10:36:29 - aynı zaman biçimi 00: 07:57 - aynı zaman biçimi SATIŞ şeysi Girişimi 160915 - Bu değişiklikler, ama sonunda 123456789101 bir sayı ile tüm METİN var - Telefon numarası, aynı uzunlukta kalır Nice Ad - Kişinin adı. Ad, Soyad Tamamlandı - Bu alan değişir. 1 kelimeden 5 kelimeye kadar.

Herhangi bir öneri takdir edilecektir.

Teşekkürler!

Örnek Dize: 499726 2016-03-31 10:36:29 00:07:57 SATIŞ

DÜZENLEME

ben gibi sütunlar halinde gitmek bilgi arıyorum zımbırtı GİRİŞİMİ 160915 123456789101 Güzel İsim Tamamlanan

Sütunlar:

df <- data.frame(callID = 499726, 
callDate = "2016-03-31", 
callTime = "10:36:29", 
callDuration = "00:07:57", 
callInitiative = "SALES THINGY INITIATIVE 160915", 
phoneNumber = "123456789101", 
agentName = "Nice Name", 
callStatus = "Completed") 
## REemember, the data in this column could be anything from 'completed' to 
## Awaiting More Info' to 'Call Back Tomorrow' to 'Is Unaware of Anything 
## We're Saying' (etc)...From a string splitting perspective, this is 
## the last one that's giving me issues.` 
+0

tam olarak içinde bekliyoruz sütunlar ne veri çerçevenizi, metni işleyerek, beklediğiniz örnek çıktısını sağlayabilirsiniz, böylece yardımcı olabilirim. – Dinesh

+0

Teşekkürler! Size bir fikir vermek için şimdi yazıyı düzenleyeceğim. – user6070714

+0

XML :: readHTMLTable? Hasat paketini de kontrol etmek ister misiniz? – chinsoon12

cevap

0

str_locate (t, AgentName) callStatus < - -

x < çözüldü substr (t (x [2] +2), nchar (t))

İlgili konular