2016-07-04 3 views
0

В биологических анализах мы часто повторяем измерения из той же молекулы, а затем строим кривую зависимости дозы, используя среднее число 2 или 3 повторений. Я хотел бы прочитать в R файл excel, где объединены заголовки столбцов реплик - текстовый пример ниже и link to example file. Функция read_excel в пакете readxl может считывать файл, но не сжимает ячейки заголовка и заменяет пустые ячейки NA.R читается в файле excel с объединенными ячейками в качестве заголовков столбцов

 
conc   | Sample1 | Sample2 
------------------------------------------- 
10   | 1.5 | 2.5 | 3 | 4 
------------------------------------------- 
100   | 15 | 25 | 30 | 40 
------------------------------------------- 
1000   | 150 | 250 | 300 | 400 

Есть ли способ либо сохранение слитого расположения клеток в R или альтернативно чтении в колонках и автоматически копировать/перенумерацию заголовки, как показано ниже?

 
conc   | Sample1.1 | Sample1.2 | Sample2.1 | Sample2.2 
-------------------------------------------------------------- 
10   | 1.5 | 2.5 |  3  |  4 
-------------------------------------------------------------- 
100   | 15  | 25  |  30 |  40 
-------------------------------------------------------------- 
1000   | 150 | 250 |  300 |  400 

Спасибо.

+0

R не позволяет дублировать имена столбцов. – milan

+0

Можете ли вы использовать данные для чтения? А также не имеют дублированных имен столбцов в ваших данных, так как вы не сможете получить доступ к обоим им, используя имя. – Psidom

+1

Возможно, проще всего просто прочитать данные без заголовков и добавить их впоследствии. Тем не менее, есть _lot_ пакетов чтения Excel: readxl, XLConnect, xlsx, openxlsx и т. Д., Поэтому у одного из них, вероятно, есть параметр для обработки этой ситуации. – alistaire

ответ

1

Не полный ответ, но можно иметь столбец списка, так что несколько значений содержатся в одной ячейке. Это может выполнять ту же функцию, что и «объединенные столбцы» в Excel. Вот пример, просто чтобы показать, что я имею в виду:

library(data.table) 
new <- data.table("V1" = c(1,2), "V2" = list(c(1,2,5),c(2,3))) 

Обратите внимание, что колонка V2 имеет 2 векторов в виде списка (каждый вектор даже уникальная длина, и каждый из них могут быть длинными или короткими, как вам нужно) , Теперь вы можете называть все значения для данной ячейки:

> new$V2[[1]] 
[1] 1 2 5 

или конкретной репликации:

> new$V2[[2]][2] 
[1] 3 

Я не знаю точно, что ваша электронная таблица выглядит, и получать его из текущей формы В зависимости от этого может возникнуть затруднение в форме столбца «Список столбцов». Надеюсь, это даст вам некоторые идеи!

Смежные вопросы