将下标从Excel导入R

时间:2018-09-16 16:12:12

标签: r excel graph subscript

我刚刚开始学习R,但是我已经遇到了第一个问题。我想在图表中显示数据。我的数据在转换为.csv工作表的Excel工作表中。但是我的数据中有一些化学式如Fe2O3,而使用.csv时,所有子描述都消失了。看起来不太好。有什么方法可以将下标从原始Excel文件转换为R? 非常感谢您的帮助:)

编辑:我的数据包含在x轴上显示的6个化学公式,所有化学公式都包含下标(即Fe2O3,ZnCl2,CO2等),在y轴上显示数值。该图是条形图。我不确定是否有办法将数字更改为R中的子主题,或者在导入之前保留它们。

图形如下所示。但我想将数字作为下标:

The graph looks like this. But I would like to have the numbers as subscripts

2 个答案:

答案 0 :(得分:2)

我不知道有一种方法可以将excel的格式转换为CSV,然后再转换为R,除非您可以使用unicode制作这些下标。 UTF8 symbols for subscript letters

鉴于您的化学品清单很短,因此调整化学品名称以帮助ggplot用下标解释它们的工作量不大。您需要在数字前后加上方括号,如果要包含更多元素,则在后面加上波浪号。然后,我们还告诉scale_x_discrete“解析”标签并将这些符号转换为格式。

set.seed(42)
chem_df <- tibble(
  Chemicals = 
    c("AgNO3", "Al2SiO5", "CO2", "Fe2O3", "FeSO4", "ZnCl2"),
  Chemicals_parsed = 
    c("AgNO[3]", "Al[2]~SiO[5]", "CO[2]", "Fe[2]~O[3]", "FeSO[4]", "ZnCl[2]"),
  Mean   = rnorm(6, 50, 30))

ggplot(chem_df, aes(x=Chemicals_parsed, Mean)) + geom_col() + 
  scale_x_discrete(name = "Chemicals",
                   labels=parse(text=chem_df$Chemicals_parsed))

enter image description here

答案 1 :(得分:2)

要添加@JonSpring的出色答案,您可以编写一个函数,将""Al2SiO5"之类的字符串转换为"Al[2]~SiO[5]"之类的字符串,因此您不必手动进行所有转换:

library(stringr)

chem.form <- function(s){
  s <- str_replace_all(s,"([0-9]+)","[\\1]~")
  if(endsWith(s,"~")) s <- substr(s,1,nchar(s) - 1)
  s
}

Chemicals <- c("AgNO3", "Al2SiO5", "CO2", "Fe2O3", "FeSO4", "ZnCl2")
Chemicals_parsed <- as.vector(sapply(Chemicals,chem.form))