R установить точку (.) в качестве разделителя тысяч и запятую (,) в качестве десятичного разделителя

Мне дали файл excel, извлеченный из базы данных SQL, что означает, что числовые поля представлены как 12345,67.

Я импортирую файл в R 3.2.5, используя library(readxl), и он правильно отображает числовое поле как 12345,67.

Я установил запятую в качестве десятичного разделителя в параметрах, потому что мне нужно, чтобы отчеты печатались в этом формате. Тем не менее, я не могу найти, чтобы установить "." точка, как разделитель тысяч. Я пробовал format и formatc, что приводит к

"Warning message:
NAs introduced by coercion"

ошибка. format и formatc приводят к строковому, а не числовому формату.

Пожалуйста, используйте этот фиктивный фрейм данных для воспроизводимых исследований.

variable=c("a","b","c","d","e","f","g","h","i","j")
value=c(0.00,196036.95,196036.95, 10244.29,90470.73,33926.53,37142.59,6.65,15.40,180941.47)
df=data.frame(variable, value)
#View the data frame

print(df)

#a quick bar plot
plot=ggplot(data=df, aes(x=variable, y=value)) +  geom_bar(stat="identity")
plot

#set comma as decimal point. We need dot as thousands separator.
options(OutDec= ",")

print(df)  # here the numbers are correctly presented as extracted from the SQL database
plot

Форматирование и форматирование результатов при преобразовании результата в числовой:

as.numeric(format(df$value, big.mark = "."))
 [1] NA NA NA NA NA NA NA NA NA NA
Warning message:
NAs introduced by coercion 

Мне нужно, чтобы окончательные результаты были представлены в этом формате, но в числовом формате, чтобы я мог генерировать графики и таблицы:

 format(df$value, big.mark = ".")
 [1] "      0,00" "196.036,95" "196.036,95" " 10.244,29" " 90.470,73" " 33.926,53" " 37.142,59" "      6,65" "     15,40" "180.941,47"

РЕДАКТИРОВАТЬ: Моя сессияInfo()

R version 3.2.5 (2016-04-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=Greek_Greece.1253  LC_CTYPE=Greek_Greece.1253    LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C                  LC_TIME=Greek_Greece.1253    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] pander_0.6.0   scales_0.4.1   forcats_0.2.0  png_0.1-7      gtable_0.2.0   cowplot_0.6.3  ggpubr_0.1.0   zoo_1.8-0      gtools_3.5.0   reshape2_1.4.2
[11] gridExtra_2.3  gridBase_0.4-7 ggplot2_2.2.1  readxl_0.1.1  

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.10     magrittr_1.5     munsell_0.4.3    colorspace_1.3-2 lattice_0.20-33  stringr_1.2.0    plyr_1.8.4       tools_3.2.5      yaml_2.1.14     
[10] lazyeval_0.2.0   digest_0.6.12    tibble_1.3.0     labeling_0.3     stringi_1.1.5   

person KRStam    schedule 20.02.2018    source источник
comment
Если вы хотите, чтобы ваша переменная печаталась в заданном формате, но на самом деле была числовой внизу, вы можете определить свой собственный метод печати:. это может помочь stackoverflow.com/questions/28159936/   -  person user20650    schedule 23.02.2018


Ответы (1)


Вы были рядом, вам просто нужно указать это в scale_y_continuous:

plot + scale_y_continuous(label = function(x) format(x, big.mark = ".", decimal.mark = ","))
person Hugh    schedule 20.02.2018
comment
Спасибо. Однако мне нужно, чтобы результаты были представлены в таблице для отчета с точкой в ​​качестве разделителя тысяч и запятой в качестве десятичного разделителя. - person KRStam; 20.02.2018