2017-01-04 15 views
0

У меня есть данные о продаже недвижимости, загруженные из Интернета. Это файл PDF. Когда я копировать и вставлять данные в текстовый файл, он выглядит следующим образом:

> a 
[1] "Airport West 1/26 Cameron St 3 br t $830000 S Nelson Alexander" "Albert Park 106 Graham St 2 br h $0 SP RT Edgar" 

Давайте возьмем первую строку в качестве примера. Каждый ряд представляет собой запись о собственности, включая пригород (аэропорт Запад), адрес (1/26 Cameron St), количество спален (3), тип недвижимости (t), цена ($ 830000), тип продажи (S). Последний (Нельсон) относится к агенту, который мне здесь не нужен.

Я хочу проанализировать эти данные. Мне нужно сначала извлечь информацию. Я надеюсь, что я могу получить данные, как это: (б это кадр данных)

> b 
     Suburb   Address Bedroom PropertyType Price SoldType 
1 Airport West 1/26 Cameron St  3   t 830000  S 
2 Albert Park 106 Graham St  2   h  0  SP 

Может кто-нибудь пожалуйста, скажите мне, как использовать stringr пакет или другие методы, чтобы разделить длинную строку в суб строк, которые мне нужны?

ответ

4

1) gsubfn :: read.patternread.pattern в пакете gsubfn принимает регулярное выражение, захват группа (части в скобках) принимается равным поле ввода и фрейм данных создаются собрать их ,

library(gsubfn) 

pat <- "^(.*?) (\\d.*?) (\\d) br (.) [$](\\d+) (\\w+) .*" 
cn <- c("Suburb", "Address", "Bedroom", "PropertyType", "Price", "SoldType") 
read.pattern(text = a, pattern = pat, col.names = cn, as.is = TRUE) 

давая это data.frame:

 Suburb   Address Bedroom PropertyType Price SoldType 
1 Airport West 1/26 Cameron St  3   t 830000  S 
2 Albert Park 106 Graham St  2   h  0  SP 

2) нет пакетов Это также может быть сделано без каких-либо пакетов, как это (pat и cn находятся сверху):

replacement <- "\\1,\\2,\\3,\\4,\\5,\\6" 
read.table(text = sub(pat, replacement, a), col.names = cn, as.is = TRUE, sep = ",") 

Примечание: Вход a в воспроизводимая форма:

a <- c("Airport West 1/26 Cameron St 3 br t $830000 S Nelson Alexander", 
"Albert Park 106 Graham St 2 br h $0 SP RT Edgar") 
+0

Большое спасибо. Я не знаю этого пакета. Это очень хорошо. И я прошу прощения за неправильную форму. –