2015-12-19 2 views
0

Я пытаюсь очистить следующий набор данных, чтобы сохранить некоторую согласованность в поле «Изменения».Заменить всю строку на строку и заменить часть строки на строку

Входной сигнал:..

test_data <- data.frame(ID=c('[email protected]', '[email protected]'), 
         Changes=c('3 max cost changes 
    productxyz > pb100 > a : Max cost decreased from $0.98 to $0.83 
    productxyz > pb2 > a : Max cost decreased from $1.07 to $0.91 
    productxyz > pb2 > b : Max cost decreased from $0.65 to $0.55', 
            '2 max cost changes 
    productabc > Everything else in "auto & truck maintenance" : Max CPC increased from $0.81 to $0.97 
    productabc > pb1000 > x : Max cost decreased from $1.44 to $1.22 
    productabc > pb10000 > Everything else in pb10000 : Max CPC increased from $0.63 to $0.76'), stringsAsFactors=FALSE) 
  1. Я хочу, чтобы удалить все строки в пределах данной области, где первый «>» следуют «Все, я хотел бы удалить, что вся линия

  2. в тех случаях, когда «все» происходит после второго «>», я буду бы заменить от «Все» в «:» с «д»

Выход:

out_data <- data.frame(ID=c('[email protected]', '[email protected]'), 
         Changes=c('3 max cost changes 
    productxyz > pb100 > a : Max cost decreased from $0.98 to $0.83 
    productxyz > pb2 > a : Max cost decreased from $1.07 to $0.91 
    productxyz > pb2 > b : Max cost decreased from $0.65 to $0.55', 
            '2 max cost changes 
    productabc > pb1000 > x : Max cost decreased from $1.44 to $1.22 
    productabc > pb10000 > q : Max CPC increased from $0.63 to $0.76'), stringsAsFactors=FALSE) 

Спасибо.

+3

И каковы были ваши попытки решить это самостоятельно? –

+0

Каждая строка не является отдельной строкой в ​​наборе данных, правильно? у вас есть только две строки, которые разделены символами новой строки? – rawr

+0

Да, это правильно! – BlackHat

ответ

1

Может быть, не самое лучшее решение, но он получает то, что вы хотите в test_data:

clean_text <- function(x){ 
    x <- gsub("(> .* >)Everything else in .* :", "\\1 q :", x) 
    x <- gsub("\n .* Everything else in .*?\n", "", x) 
    x 
} 
out_data <- test_data 
out_data[,2] <- clean_text(test_data[,2]) 
out_data 
      ID 
1 [email protected] 
2 [email protected] 
                                                                                Changes 
1 3 max cost changes\n         productxyz > pb100 > a : Max cost decreased from $0.98 to $0.83\n         productxyz > pb2 > a : Max cost decreased from $1.07 to $0.91\n         productxyz > pb2 > b : Max cost decreased from $0.65 to $0.55 
2                        2 max cost changes         productabc > pb1000 > x : Max cost decreased from $1.44 to $1.22\n         productabc > pb10000 > q : Max CPC increased from $0.63 to $0.76 
+0

Спасибо. Я не думаю, что новая линия ломается, но я буду поддерживать их. Храните их так же, как оригинал – BlackHat

Смежные вопросы