[英]How to import excel data into R using column name and row name
我是R新手,想知道如何使用行名和列名將Excel數據導入到R中。 具體來說,我需要一個excel文件中的許多工作表中的數據子集。 我可以使用行名和列名來識別和提取某些數據單元到R嗎?
Worksheet 1
----------
* X Y Z
A 1 2 2
B 1 1 1
C 1 3 4
D 4 2 2
E 2 2 2
----------
Worksheet 2
----------
* X Y1 Z1
A 1 2 2
B 1 2 3
C 1 3 4
D 4 1 1
E 2 1 1
例如,在上面的電子表格中,我如何使用工作表1中的行和列名稱(D,Y)(D,Z)(E,Y)(E,Z)提取數據(2,2,2,2)
如何使用工作表2中的行和列名稱(D,Y1)(D,Z1)(E,Y1)(E,Z1)提取數據(1,1,1,1)?
感謝您提供的任何幫助
巴里
@Andrie提到了XLConnect包,它是R和Excel之間I / O的一個非常有用的包,可以在Excel工作表中選擇區域。
我在Dropbox公共文件夾中創建了一個類似你的Excel文件,你可以在這里下載example.xls
文件。
require(XLConnect)
## A5:C5 correspond to (D,Y) (D,Z) (E,Y) (E,Z) in your example
selectworksheet1 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls",
sheet = "Worksheet1",
region = "A5:C5", header = FALSE)
selectworksheet1
## Col0 Col1 Col2
## 1 2 2 2
## B4:C5 correspond to (D,Y1) (D,Z1) (E,Y1) (E,Z1) in the second example
selectworksheet2 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls",
sheet = "Worksheet2",
region = "B4:C5", header = FALSE)
selectworksheet2
## Col0 Col1
## 1 1 1
## 2 1 1
unlist(selectworksheet2)
## Col01 Col02 Col11 Col12
## 1 1 1 1
有幾個包提供了將Excel數據導入R的功能; 請參閱R數據導入/導出文檔。
我發現xlsx包很有用(它將讀取.xls和.xlsx文件)。 我不相信它會接受行/列名作為輸入,但它會接受它們的數值(例如第1行,第4列)。 在你的情況下,假設X,Y和Z對應於第1-3列,這樣的東西應該有效:
library(xlsx)
# first example subset; call it ss1
# assume first row is not a header; otherwise requires header = T
ss1 <- read.xlsx("myfile.xlsx", sheetIndex = 1, rowIndex = 4:5, colIndex = 2:3)
# second example subset; call it ss2
# just the same except worksheet index = 2
ss2 <- read.xlsx("myfile.xlsx", sheetIndex = 2, rowIndex = 4:5, colIndex = 2:3)
但是,您需要嘗試使用自己的文件,直到按預期方式工作。 您還可以指定sheetName,但是一旦找出每個工作表的正確索引,我發現sheetIndex通常可以更可靠地工作。 如果第一行是標題,請注意。
說了這么多:我首選的選擇是將工作表導出為CSV等文本格式,使用shell工具(剪切,頭部,尾部等 )來獲取所需的行/列並將其導入R.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.