2015-07-27 3 views
1

Я работаю над excel-файлом, состоящим из матрицы 261 x 10. Матрица состоит из еженедельных доходностей 10 акций с 2010 по 2015 год. Итак, у меня есть 10 переменных (запасы) и 261 наблюдение (еженедельная доходность) для каждой переменной. Для моей магистерской диссертации я должен применить «матрицу перегруппировки», разработанную Рюшендорфом и Пучкетти (2012) на моей матрице. Я не буду вдаваться в подробности о теоретической стороне этой концепции. Дело в том, что я загрузил пакет, способный выполнить алгоритм перегруппировки в R. Я тестировал его, и он отлично работает.Импорт данных Excel в R

На самом деле единственное, что мне нужно знать, - это как импортировать мою excel-матрицу в R, чтобы иметь возможность выполнять алгоритм перегруппировки на нем. Я могу переписать свою матрицу в R (вручную) только с помощью кодирования каждого элемента матрицы, используя формулу матрицы программирования в R:

A = matrix(c(), nrow= , ncol= , byrow=TRUE) 

Проблема заключается в том, что делает это для такой большой матрицы (261 х 10) было бы очень трудоемким. Является ли их каким-либо способом импортировать мою excel-матрицу в R и что R распознает ее как матрицу, состоящую из числовых значений, готовых к вычислениям (аналогично тому, как это делается вручную)? Таким образом, мне просто нужно запустить функцию «алгоритма перегруппировки», представленную в R.

Заранее спасибо.

+0

Существует несколько способов сделать это. Вероятно, самым легким было бы сохранить файл Excel в виде CSV, а затем вызвать 'read.csv()' в R и, наконец, принудить матрицу через 'as.matrix()'. – bgoldst

+0

Итак, вопрос о том, как импортировать данные. –

ответ

0

Вы не представили минимальный воспроизводимый пример, поэтому ответы, вероятно, будут иметь меньшее качество. Во всяком случае, вы должны быть в состоянии загрузить первенствовать файл с чем-то вроде:

require(XLConnect) 
wrkbk <- loadWorkbook("path/to/your/data.xlsx") 
df <- readWorksheet(wrkbk, sheet = 1, header = TRUE) 

А затем преобразовать data.frame к matrix через

ans <- as.matrix(df) 

В противном случае, вам нужно сохранить файл как .txt или .csv файл с открытым текстом и использовать read.table или read.csv и тому подобное. Проконсультируйтесь с соответствующими страницами справки.

+0

Большое спасибо за вашу помощь! – PAX2GARO

1

Я делаю выбор в пределах открытого листа Excel и копируется в буфер обмена. Это затем работал на Mac:

> con=pipe("pbpaste") 
> dat <- data.matrix(read.table(con)) 
> dat 
     V1 V2 V3 
[1,] 1 1 1 
[2,] 2 2 2 
[3,] 3 3 3 
[4,] 4 4 4 
[5,] 5 5 5 
[6,] 6 6 6 
[7,] 7 7 7 
[8,] 8 8 8 
[9,] 9 9 9 
[10,] 10 10 10 
[11,] 11 11 11 
[12,] 12 12 12 
[13,] 13 13 13 
[14,] 14 14 14 

Метод несколько отличается от устройств Windows, но страница помощи для ?connections должны иметь свои ОС-специфические методы.

+0

+1 Мне очень нравится эта идея; переход через буфер обмена, вероятно, является самым быстрым решением. И вы можете свернуть две строки в одну, используя 'system2()'. Например, это работает для меня на Cygwin (хотя я должен указать, что утилита Cygwin 'getclip' не обрабатывает символы UTF-8 правильно):' as.matrix (read.table (text = system2 ('getclip', стандартный вывод = Т))) '. – bgoldst

+1

@bgoldst, почему бы просто не сделать 'as.matrix (read.table ('clipboard'))'? – r2evans

+1

@ r2evans Очень приятно, я не знал об этой функции! К сожалению, из моего тестирования на 'x86_64-unknown-cygwin' он работает, только когда я сначала создаю окно X11 из сеанса R. Он также работает в RStudio в Windows, но я не могу комментировать другие платформы. – bgoldst

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