如何使用dplyr删除数据中的所有文本?

如何使用dplyr删除数据中的所有文本?,r,text,dplyr,tidyverse,R,Text,Dplyr,Tidyverse,如果我的数据如下所示: q2_3 q2_4 q2_5 <chr> <chr> <chr> 1 1A 2B 3C 2 4D 5E 6F q2_3 q2_4 q2_5 1 1A 2B 3C 2 4D 5E 6F 如何仅删除文本 我只想留下数字 您可以使用\\D删除所有非数字字符 使用dplyr library(dplyr) df %>% mutate_all(~gsub('\\D', '', .)) # q2_3

如果我的数据如下所示:

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

如何仅删除文本


我只想留下数字

您可以使用
\\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[]您可以使用
\\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[]您还可以使用readr包中的parse_number()(它将从值中提取第一个数字):


您还可以从readr软件包中使用parse_number()(该软件包将从值中提取第一个数字):


另一个带有
mutate/cross

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另一个带有
mutate/cross的选项

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“文本”是什么意思?删除所有chr条目,还是只保留列中的数字?请展示您的预期结果。您好,谢谢您的回复!是的,我的意思是只剩下数字。你说的“文本”是什么意思?删除所有chr条目,还是只保留列中的数字?请展示您的预期结果。您好,谢谢您的回复!是的,我的意思是只剩下数字了。谢谢你的评论!如果我有多组列和行,比如上面的数据,该怎么办?是否有任何函数可用于删除所有“字符”?我只想留下数字我不确定你的问题是否正确。此解决方案应适用于任意数量的列,并且始终仅返回数字(如果没有数字,则返回NA)。如果没有达到预期效果,请举例说明。谢谢您的评论!如果我有多组列和行,比如上面的数据,该怎么办?是否有任何函数可用于删除所有“字符”?我只想留下数字我不确定你的问题是否正确。此解决方案应适用于任意数量的列,并且始终仅返回数字(如果没有数字,则返回NA)。如果没有达到预期效果,请举例说明。谢谢您的评论!我很好奇如何才能删除一堆数据中的“字符”(如A、B、C)。上面的数据只有6个变量,所以我可以手动删除字符。但是如果我有数百万个,我可以使用任何函数吗?@AaronSu如果你只想删除A、B和C字符,你可以做
df%>%mutate\u all(~gsub('ABC'),'')
。这就是你想要的吗?谢谢你的评论!我很好奇如何才能删除一堆数据中的“字符”(如A、B、C)。上面的数据只有6个变量,所以我可以手动删除字符。但是如果我有数百万个,我可以使用任何函数吗?@AaronSu如果你只想删除A、B和C字符,你可以做
df%>%mutate\u all(~gsub('ABC'),'')
。这就是你想要的吗?谢谢你的评论!顺便说一句,我想知道是否有任何功能,可以删除所有字符。我只想留下数字!谢谢你的评论!顺便说一句,我想知道是否有任何功能,可以删除所有字符。我只想留下数字!
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"))