Разделение столбца в кадре данных R - PullRequest
2 голосов
/ 27 сентября 2010

У меня есть столбец данных во фрейме данных R, который имеет такие значения, как:

Blue-#105
Green-#8845
Yellow-#5454
Blue-#999

Я хочу удалить последнюю часть числа (начиная с - #), чтобы при построении графиков Blue-#999 и Blue-#105 учитывали одно и то же. Как я мог сделать это?

Ответы [ 2 ]

7 голосов
/ 27 сентября 2010

Используйте регулярные выражения:

> DF <- data.frame(col=c("Blue-#105", "Green-#8845", "Blue-#999"))
> DF
          col
1   Blue-#105
2 Green-#8845
3   Blue-#999
> DF$col <- gsub("-\\#.*", "", DF$col)
> DF
    col
1  Blue
2 Green
3  Blue
> 

Здесь мы говорим, что все строки начинаются с -# (где необходимо экранировать символ char #) и затем независимо от ---, что .* в регулярном выражении lingo: любой символ (точка), повторенный столько раз, сколько он подходит (звезда) --- будет заменен пустой строкой или, другими словами, удален.

3 голосов
/ 27 сентября 2010

Используйте функцию sub или gsub.Для вашего примера вы могли бы сделать что-то вроде:

newcolors <- sub("^([^-]*)-.*$", "\\1", oldcolors )

Это предполагает, что цвета находятся в векторе 'oldcolors' и помещает результаты в newcolors.Шаблон начинается в начале строки (^), затем соответствует 0 или более символам, которые не являются черточками ([^ -] ), символами вокруг, которые говорят, что нужно сохранить то, что соответствует.Затем он соответствует тире, за которым следуют дополнительные символы (. ) до конца строки ($), затем совпадающая часть (вся строка) заменяется тем, что было найдено в пределах паренсов (цвет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...