[已使用某些数据和试用代码更新]
我有一些孟加拉语unicode格式的数字。要用数据开发一些图形。但是R会将数据读取为“字符”而不是“数字”。如何使R将数据读取为“数字”。谢谢。
我的数据表如下:
"সংখ্যা" "বছর"
৩৪,৭০৮ ২০১১
৩২,৮১০ ২০১২
৩২,৮৯৪ ২০১৪
我已使用as.numeric函数将两列都转换为数字:
mb$`“সংখ্যা”` <- as.numeric(mb$`“সংখ্যা”`)
mb$`“বছর”` <- as.numeric(mb$`“বছর”`)
该类已转换为警告:
Warning message:
NAs introduced by coercion
然后我尝试绘制条形图:
ggplot(mb, aes("বছর", "সংখ্যা"))+
geom_bar(stat = "identity", width=0.3)
结果如下: enter image description here
遵循Rohit的代码,然后尝试绘制条形图:
ggplot(mb, aes(x="বছর", y="সংখ্যা"))+
geom_bar(stat = "identity")
它不起作用,图像链接: enter image description here
然后用英语绘制一个数据图,效果很好:
ggplot(mbe, aes(x=year, y=number))+
geom_bar(stat = "identity")
绘制图像:enter image description here
任何观察/建议吗?
答案 0 :(得分:0)
您首先需要将数字转换为等效的英语/拉丁语。您可以使用stringi
库执行此操作。然后,您可以使用as.numeric()
n <- '১০৫'
library(purrr)
library(stringi)
n %>% stri_trans_general('Bengali-Latin') %>%as.numeric()
# [1] 105
编辑:对于您提供的数据,您可以执行以下操作:
mb
# সংখ্যা বছর
# 1 ৩৪,৭০৮ ২০১১
# 2 ৩২,৮১০ ২০১২
# 3 ৩২,৮৯৪ ২০১৪
library(dplyr)
library(stringi)
mb <- mb %>%
mutate_all(function(x){ # mutate_all will apply the function to all columns of mb
x %>%
stri_trans_general('Bengali-Latin') %>% # convert to latin charset
gsub(pattern = ',',replacement = '')%>% # Commas need to be removed
as.numeric()
})
# সংখ্যা বছর
# 1 34708 2011
# 2 32810 2012
# 3 32894 2014
编辑:对于图解,您的列名称带有孟加拉语和引号,因此需要将其括在反引号中:
ggplot(mb,aes(`"বছর"`,`"সংখ্যা"`))+
geom_col()