Автоматическое изменение файла Excel с помощью R

#r #excel

#r #excel

Вопрос:

У меня есть данные Excel следующим образом:

введите описание изображения здесь

Как вы можете видеть, файл Excel содержит 4 записи данных (month, X, Y , Z) , все они собраны в один столбец (A) . Мне интересно создать программу, в R которой можно автоматически отделять данные друг от друга и, наконец, генерировать матрицу, содержащую 4 столбца ( month, X, Y , Z ) и три строки их соответствующих значений. Например, матрица

  M = [March, 12, 15, 44;

     April, 33, 34, 21;

     June, 44, 66, 33]. 
 

Кроме того, есть ли какое-либо другое решение (например, автоматически сгенерировать текстовый текст.файл или новый файл Excel, который может решить эту проблему и поместить все данные в один столбец каждый?

Я начал писать код R, но поскольку я новичок в R, поэтому я заблокирован. Я также не эксперт по Excel.

Любая помощь будет очень признательна

Комментарии:

1. показать код, который вы запустили?

2. @cory Это беспорядок, поверьте мне: p

Ответ №1:

Попробуйте этот код. Это немного длинновато, но if будет работать для любых имеющихся у вас элементов. Вот код, использующий tidyverse функции. Код загружает файл. Поскольку имена указаны в заголовке, вы выделяете их в вектор для последующего процесса. С помощью данных, которые мы используем separate_rows() ; для разделения строки, а затем pivot_wider() для повторного упорядочивания. Наконец, мы используем str_split() для обработки имен. Мы присваиваем их данным и экспортируем с помощью write.table() :

 library(readxl)
library(dplyr)
library(tidyr)
#Load
df <- read_excel('Libro1.xlsx',1,)
#Extract names
names(df)<-'V1'
#Reshape
input <- df %>% mutate(id=row_number()) %>%
  separate_rows(V1,sep=';') %>%
  filter(V1!='') %>%
  group_by(id) %>% mutate(id2=paste0('V',row_number())) %>%
  pivot_wider(names_from = id2,values_from=V1) %>%
  ungroup() %>% select(-id)
#Separate
input <- input %>% separate(V1,c('Month','V1'),sep='-')
#Export
write.table(input,file='Myfile.txt',sep='t',row.names = F)
 

В .txt файле у вас будет это:

   Month V1 V2 V3
1 March 12 15 44
2 April 33 34 21
3  June 44 66 33
 

Комментарии:

1. Большое вам спасибо. Я пробовал ваш код, но, похоже, когда я создавал текстовый файл, значения для X складывались в месяцы. Как я могу решить эту проблему?

2. Не волнуйтесь, но этот код выдает ошибку: объект ‘X’ не найден

3. Я всегда получаю одну и ту же ошибку: объект ‘X’ не найден: (

4. @Christina Я добавил глобальное изменение. Пожалуйста, повторно запустите весь новый код и дайте мне знать, если это сработает!

5. Большое вам спасибо! Live love Argentinaaa