如何在R语言管道操作中去除列空白字符以顺利完成整数类型转换
目标列无法转换为整数的核心原因是列内包含作为千位分隔符的非间断空白字符(\u00A0)、欧元货币符号,普通的空白清理函数默认仅能识别普通空格,所以无法生效。
你可以通过以下两种方案实现类型转换:
方案1:使用readr内置的数值解析函数(更稳妥)
library(tidyverse) url <- "https://www.destatis.de/DE/Themen/Staat/Oeffentliche-Finanzen/Schulden-Finanzvermoegen/Tabellen/03-2021-vorlaufiger-schuldenstand-laender.html" content <- rvest::read_html(url) result <- content %>% html_table(fill = TRUE) %>% pluck(1) %>% `[`(4:19,1:2) %>% rename(Schulden = 2) %>% # 清理数值文本并转换为整数 mutate(Schulden = parse_number(Schulden, locale = locale(grouping_mark = "\u00A0")) %>% as.integer())
parse_number会自动忽略文本前后的非数字后缀,同时指定千位分隔符为非间断空格,可准确提取数值。
方案2:使用正则替换清理所有非数字字符(更简单)
如果你不需要区分其他特殊符号,直接删除所有非数字内容即可:
library(tidyverse) url <- "https://www.destatis.de/DE/Themen/Staat/Oeffentliche-Finanzen/Schulden-Finanzvermoegen/Tabellen/03-2021-vorlaufiger-schuldenstand-laender.html" content <- rvest::read_html(url) result <- content %>% html_table(fill = TRUE) %>% pluck(1) %>% `[`(4:19,1:2) %>% rename(Schulden = 2) %>% mutate(Schulden = gsub("[^0-9]", "", Schulden) %>% as.integer())
运行完成后可通过class(result$Schulden)验证列类型已经转换为整数。
内容的提问来源于stack exchange,提问作者AltaStatistika
相关产品推荐
相关产品推荐

