Получение подписки из Excel в R - PullRequest
       51

Получение подписки из Excel в R

0 голосов
/ 16 сентября 2018

Я только начал изучать R, но у меня уже есть первая проблема. Я хочу отобразить свои данные в виде графика. Мои данные находятся в листе Excel, преобразованном в лист CSV. Но у меня есть некоторые химические формулы, такие как Fe2O3 в моих данных, и с .csv все подписчики исчезли. Это выглядит не очень хорошо. Есть ли способ получить подписки из исходного файла Excel в R? Буду очень признателен за вашу помощь:)

Редактировать: Мои данные содержат 6 химических формул, отображаемых на оси x, которые все содержат индексы (т.е. Fe2O3, ZnCl2, CO2, ...) и числовые значения, отображаемые на оси y. График представляет собой гистограмму. Я не уверен, есть ли способ изменить числа на подсписки в R или сохранить их до импорта.

График выглядит следующим образом. Но я хотел бы иметь номера в качестве подписки:

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

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Чтобы добавить превосходный ответ @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))
0 голосов
/ 17 сентября 2018

Я не знаю, что есть способ перенести форматирование из Excel в CSV, а затем в R, если вы не можете сделать эти подписки, используя Unicode. UTF8 символов для нижних букв

Учитывая, что ваш список химикатов невелик, не так уж сложно настроить названия химикатов, чтобы помочь 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

...