Как я могу удалить все тексты в моих данных с помощью dplyr? - PullRequest
0 голосов
/ 29 мая 2020

Если мои данные выглядят так:

q2_3  q2_4  q2_5
<chr> <chr> <chr>
1    1A    2B   3C
2    4D    5E   6F

Как удалить только тексты?

Я хочу, чтобы остались только числа!

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Также вы можете использовать parse_number () из пакета readr (который будет извлекать первое число из значений):

library(readr)

data <- data.frame(q2_3 = c("1A", "4D"), 
                   q2_4 = c("2B", "5E"), 
                   q2_5 = c("3C", "6F"))

data[] <- lapply(data, parse_number)

приводит к

> print(data)
  q2_3 q2_4 q2_5
1    1    2    3
2    4    5    6
1 голос
/ 29 мая 2020

Вы можете удалить все символы, не являющиеся цифрами, используя \\D.

Использование dplyr

library(dplyr)
df %>% mutate_all(~gsub('\\D', '', .))

#  q2_3 q2_4 q2_5
#1    1    2    3
#2    4    5    6

Или в базе R:

df[] <- lapply(df, function(x) gsub('\\D', '', x))

данные

df <- structure(list(q2_3 = c("1A", "4D"), q2_4 = c("2B", "5E"), q2_5 = c("3C", 
"6F")), class = "data.frame", row.names = c("1", "2"))
0 голосов
/ 29 мая 2020

Другой вариант с mutate/across

library(dplyr)
library(stringr)
df1 %>%
    mutate(across(everything(), str_remove_all, "\\D+"))
#    q2_3 q2_4 q2_5
#1    1    2    3
#2    4    5    6

данные

df1 <-  structure(list(q2_3 = c("1A", "4D"), q2_4 = c("2B", "5E"), q2_5 = c("3C", 
"6F")), class = "data.frame", row.names = c("1", "2"))
...