从Excel获取下标到R

问题描述 投票:2回答:2

我刚开始学习R,但我已经遇到了第一个问题。我想在图表中显示我的数据。我的数据在Excel表格中转换为.csv表格。但是我的数据中有一些像Fe2O3这样的化学配方,而且.csv所有的订阅都没了。这看起来不太好。有没有办法将原始Excel文件的下标导入R?我将衷心感谢您的帮助 :)

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

图表看起来像这样。但我想将这些数字作为下标:

r excel graph subscript
2个回答
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


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))
© www.soinside.com 2019 - 2024. All rights reserved.