在 R 中将 <f6> 更改为瑞典字符和相关的 ggplot geom_bar 问题
Posted
技术标签:
【中文标题】在 R 中将 <f6> 更改为瑞典字符和相关的 ggplot geom_bar 问题【英文标题】:change <f6> to swedish charactors and related ggplot geom_bar issues in R 【发布时间】:2019-07-02 03:47:08 【问题描述】:我有 2 个与瑞典字符有关的问题。我直接从 MS SQL 数据库中获取数据。 1.谁能给我一个提示我怎么能在R中改回瑞典字符?
我使用 write.csv 将数据写入 csv,然后将这些字符串复制并粘贴到此处以使 df 如下所示
library(tidyverse)
library(ggplot2)
library(scales)
c <- c("c","u","m","j","c","u","m","j","c","u","m","j")
city <- c("G<f6>teborg", "Ume<e5>", "Malm<f6>", "J<f6>nk<f6>ping","G<f6>teborg", "Ume<e5>", "Malm<f6>", "J<f6>nk<f6>ping","G<f6>teborg", "Ume<e5>", "Malm<f6>", "J<f6>nk<f6>ping")
priority <- c(1,1,1,1,0,0,0,0,2,3,3,2)
n_cust <- sample(50:1000, 12, replace=T)
df <- data.frame(c,city,priority,n_cust)
应该是 ö 并且是 å
-
够有趣的。如果我使用如下代码:
dpri %>% group_by(kommun, artikel_prioritet) %>% summarise(n_cust=n_distinct(kund_id), sum_sales=sum(p_sum_adj_sale), avg_margin=mean(pp_avg_margin), avg_pec_sales=mean(p_pec_sales)) %>% arrange(desc(sum_sales)) %>% head(20)%>% ggplot(aes(x=reorder(kommun, sum_sales), y=sum_sales, fill=factor(artikel_prioritet))) + geom_bar(stat='identity')+ coord_flip()+ scale_y_continuous(labels = comma)+ facet_grid(.~ factor(artikel_prioritet), scales = "free")+ theme(legend.position="none")
我收到了这个错误: grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, 中的错误: “utf8towcs”中的无效输入“Göteborg”
如果我首先将这个 head(20) 放入变量 ci。然后使用 ggplot 绘制 ci
ggplot(ci,aes(x=reorder(kommun, sum_sales), y=sum_sales, 填充=因子(artikel_prioritet))) + geom_bar(stat='identity')+ coord_flip()+ scale_y_continuous(labels = comma)+ facet_grid(.~ 因子(artikel_prioritet),尺度 = “免费”)+ 主题(legend.position="none")
我有没有任何城市传说的条形图。 然后我打印出 ci,我得到的图片如下:
然后,我将 head(20) 写入 csv 'cityname.csv' 然后将 read.csv 写入 R 用同样的代码做条形图
ci
ggplot(ci,aes(x=reorder(kommun, sum_sales), y=sum_sales, 填充=因子(artikel_prioritet))) + geom_bar(stat='identity')+ coord_flip()+ scale_y_continuous(labels = comma)+ facet_grid(.~ 因子(artikel_prioritet),尺度 = “免费”)+ 主题(legend.position="none")
我得到的图片如下:
这一次我们可以看到传说,但这次可以看到。 希望得到一些建议我如何修复瑞典语中的字符串并且想知道是否有任何其他方法没有 write.csv 然后再次阅读仍然可以修复条形图?
谢谢!
【问题讨论】:
【参考方案1】:我相信您的问题是 R 不知道如何解释您的字符编码。尝试\u
表示法而不是<>
,它表示R 中的UTF-8 编码
> city <- c("G\u00f6teborg", "Ume\u00e5", "Malm\u00f6", "J\u00f6nk\u00f6ping","G\u00f6teborg", "Ume\u00e5", "Malm\u00f6", "J\u00f6nk\u00f6ping","G\u00f6teborg", "Ume\u00f6", "Malm\u00f6", "J\u00f6nk\u00f6ping")
> Encoding(city)
[1] "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8" "UTF-8"
> head(city)
[1] "Göteborg" "Umeå" "Malmö" "Jönköping" "Göteborg" "Umeå"
编辑:
您问了一个很好的后续问题,关于如何以编程方式进行此替换。我在下面也提供了一个解决方案,使用tidyverse
包dplyr
和stringr
> city <- c("G<f6>teborg", "Ume<e5>", "Malm<f6>", "J<f6>nk<f6>ping","G<f6>teborg", "Ume<e5>", "Malm<f6>", "J<f6>nk<f6>ping","G<f6>teborg", "Ume<f6>", "Malm<f6>", "J<f6>nk<f6>ping")
> city_df <- as.data.frame(city)
> special_character_replacements <- c("<f6>" = "\\u00f6", "<e5>" = "\\u00e5")
> city_df %>%
dplyr::mutate(city_fixed =
stringr::str_replace_all(city, special_character_replacements))
city city_fixed
1 G<f6>teborg Göteborg
2 Ume<e5> Umeå
3 Malm<f6> Malmö
4 J<f6>nk<f6>ping Jönköping
5 G<f6>teborg Göteborg
6 Ume<e5> Umeå
7 Malm<f6> Malmö
8 J<f6>nk<f6>ping Jönköping
9 G<f6>teborg Göteborg
10 Ume<f6> Umeö
11 Malm<f6> Malmö
12 J<f6>nk<f6>ping Jönköping
【讨论】:
感谢您的评论,但很抱歉问,我如何才能将 首先更改为 \u 格式?有什么推荐吗? 好问题,我在答案中附加了一个解决方案。如果对您有帮助,请将其标记为已接受:-) 非常感谢。如果您也可以给我建议,我怎么能找到 "<f6>
这样的字符出现在您的数据中,您可以删除<>
字符,然后在开头添加\u00
。所以<f6>
变为\u00f6
,<e5>
变为\u00e5
,而一个名为<a1>
的字符(我编造的)将变为\u00a1
非常感谢!以上是关于在 R 中将 <f6> 更改为瑞典字符和相关的 ggplot geom_bar 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在R中将变量'labeled'的类更改为string或chr?