Как заменить все строки в столбце в R? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть столбец данных, в котором я пытаюсь удалить все символы, которые не являются числами. Данные выглядят следующим образом:

Col1
Name=12_Represse, Name=12_Represse, Name=12_Represse, Name=13_Heterochrom/l, Name=13_Heterochrom/lo
Name=13_Heterochrom/lo
Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx 

Ожидаемый вывод:

Col1
12,12,12,13,13
13
11,11,11,11,11,11

Я пытался адаптироваться от других вопросов, которые направлены на удаление определенных c строк. Например, попытка:

test <- str_replace_all(data$col1,"#[a-z,A-Z]*","")

Однако эта или подобные адаптации, где я пробовал gsub, похоже, не работают. Я новичок в R, поэтому любое руководство поможет.

Ответы [ 2 ]

3 голосов
/ 17 февраля 2020

Вот два способа сохранить только цифры.

1. База R.

gsub("[^[:digit:],]", "", data$col1)
#[1] "12,12,12,13,13"    "13"                "11,11,11,11,11,11"

2. Упаковка stringr.

stringr::str_remove_all(data$col1, "[^[:digit:],]")
#[1] "12,12,12,13,13"    "13"                "11,11,11,11,11,11"

Данные.

col1 <- c('Name = "12_Represse", Name="12_Represse", Name="12_Represse", Name="13_Heterochrom/l", Name="13_Heterochrom/lo"',
          'Name="13_Heterochrom/lo"',
          'Name="11_Weak_Tx", Name="11_Weak_Tx", Name="11_Weak_Tx", Name="11_Weak_Tx", Name="11_Weak_Tx", Name="11_Weak_Tx"')
data <- data.frame(col1)
2 голосов
/ 17 февраля 2020

Вы можете попробовать:

gsub("[A-Z]|[a-z]|[=]|\\s|_|/", "", Col1)

Так что, если Col1 совпадает с вашим:

Col1 <- c("Name=12_Represse, Name=12_Represse, Name=12_Represse, Name=13_Heterochrom/l, Name=13_Heterochrom/lo", 
"Name=13_Heterochrom/lo", "Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx, Name=11_Weak_Tx "
)

Вы получите

gsub("[A-Z]|[a-z]|[=]|\\s|_|/", "", Col1)
#> [1] "12,12,12,13,13"    "13"                "11,11,11,11,11,11"
...