如何使用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"))