10分鐘帶你認識Dataverse與 R「dataverse」套件
王俞才
一、 Dataverse簡介
Dataverse是一個用於共享、儲存、引用、探索和分析研究資料的數據管理系統,同時也代表著透過該數據管理系統而建立的資料庫。因此,學校系所、期刊、組織機構、研究人員、研究團隊或專案等都可以利用這套數據管理系統來建立自己的Dataverse,發佈想與他人共享的研究資料,並可藉此獲得學術信譽和提高網路能見度,亦有助於他人更方便地取得及二次利用研究資料。
在Dataverse的數據管理系統中定義了三個重要的層次:Dataverse、資料集(dataset)
和文件(file)。資料集是由一個或多個文件及詮釋資料(metadata)所組成的集合。而文件是組成資料集的最小單位,它可以是資料使用說明、資料檔、問卷或純文字檔等任何形式的檔案。使用者可以將這些資訊做為檢索的條件,便於找到符合需求的研究資料,並進一步進行資料探索和分析。
Dataverse
repository是基於Dataverse而建立的資料分享平台。如圖一,一個Dataverse
repository集結了多個Dataverse,而每個Dataverse除了可以蒐錄多個資料集外,還可以再包含其他的Dataverse。因此,使用者不僅可以透過Dataverse
repository獲取大量的研究資料,同時也可以連結到很多其他的Dataverse,然後再透過這些Dataverse找到更多的研究資料和Dataverse。
圖一、Dataverse repository組織結構圖
如圖二,全世界目前共有43個Dataverse
repository,其中Harvard
Dataverse是由哈佛大學量化社會科學研究所(Harvard
Institute for Quantitative Social Science, IQSS)、哈佛大學圖書館(Harvard
Library)及哈佛大學資訊技術中心(Harvard
University Information Technology,HUIT)共同合作開發的,為目前最著名且蒐錄最多研究資料的Dataverse
repository。
Harvard
Dataverse包含了超過3,200個Dataverse,涵蓋社會科學、生命科學、農業科學、地球與環境科學、資訊科學等學科,累計共有85,764個資料集或521,803份文件。這些研究資料可以透過出版日期、主題和作者姓名進行瀏覽,也可透過查詢進行檢索、下載和引用。截至六月初,其資料下載次數已超過730萬次。
圖二、43個Dataverse
repository分布圖
二、 資料查詢
在沒有註冊或登入的情況之下,使用者仍然可以在Harvard
Dataverse中查詢Dataverse、資料集和文件。以圖三為例,透過簡易查詢我們可以找到「ICPSR
Harvested Dataverse」。點選該連結後,就可以繼續搜尋或瀏覽ICPSR
Harvested Dataverse底下所蒐錄的資料集和文件。對於已發布的資料集,可以瀏覽其資料集說明,並進一步進行資料探索和資料視覺化。若對於尚未發布的資料集感興趣,則必須向該Dataverse的管理者取得授權來瀏覽。此外,「Advanced
Search」功能允許使用者針對Dataverse、資料集和文件等相關較詳細的欄位來做查詢,例如:Dataverse的學門分類、對資料集的描述、變數名稱或變項說明…等,讓使用者可以得到更精確的搜尋結果。根據搜尋結果,可以再利用「Sort」按相關性、發布時間或作者姓名筆畫等將查詢結果加以排序。
圖三、Harvard Dataverse 資料查詢頁面
三、 資料下載
在執行檢索並找到我們要的Dataverse或資料集後,點擊Dataverse和資料集的名稱或其縮圖圖像即可被帶到該Dataverse或資料集的頁面。如圖四,一旦進入資料集的頁面後,我們可以看到其標題、引用、說明和其他欄位等。在這些欄位的下方,還可以看到資料集包含的所有文件、詮釋資料和資料版本等資訊。Harvard Dataverse提供了EndNote XML、RIS Format及Bib Tex等三種格式的資料集引用說明供使用者下載。
圖四、資料集頁面
圖五、文件下載頁面
四、 線上分析
圖六、摘要分析
圖七、交叉分析
五、 Dataverse的建立與管理
Dataverse、資料集和文件的建立、管理和共享是一個協作的過程。對此,Dataverse訂定了13種使用權限,大致可分為以下7類:
1.
新增權限:新增Dataverse、新增資料集。
2.
瀏覽權限:瀏覽尚未發布的Dataverse、瀏覽尚未發布的資料集。
3.
下載權限:下載文件。
4.
編輯權限:編輯Dataverse、編輯資料集。
5.
管理權限:管理Dataverse權限、管理資料集權限。
6.
發布權限:發布Dataverse、發布資料集。
7.
刪除權限:刪除Dataverse、刪除草稿版資料集。
由於不同的使用者對於Dataverse有不同的權限需求,因此Dataverse在多種不同的權限組合中共定義了8種角色:管理者、捐贈者、監管者、資料集創建者、Dataverse與資料集創建者、Dataverse創建者、文件下載者和成員等,不同角色具有不同的權限。如圖八,管理者具有所有的權限;捐贈者則具有瀏覽尚未發布的Dataverse、下載文件、編輯資料集和刪除草稿版資料集等四種權限。此外,Dataverse也允許同一使用者同時具有多種角色。
圖八、Dataverse的管理者角色與使用權限
六、 R「dataverse」套件
dataverse套件是Dataverse
4料庫的用戶端。該套件可以對任何的Dataverse repository進行資料檢索、下載和儲存,也可以用來建立Dataverse和上傳資料檔。dataverse套件可以經由CRAN來下載,或者透過GitHub找到最新的釋出版本和查看相關的資訊:
if (!
require(
"remotes")) {
install.packages(
"remotes")
}
remotes::install_github(
"iqss/dataverse-client-r")
上述有提及dataverse套件可以對目前43個Dataverse repository進行資料檢索。但在檢索之前,使用者必須透過環境變數DATAVERSE_SERVER的設定來指定要搜尋的Dataverse repository:
library(
"dataverse")
Sys.setenv(
"DATAVERSE_SERVER" =
"dataverse.harvard.edu")
dataverse套件提供了一個API來檢索Dataverse、資料集和文件等。最簡單的搜尋方式為任意給他一個查詢字串:
dataverse_search(
"ICPSR")
或者可以依指定的欄位來做較精確的查詢:
dataverse_search(
"ICPSR",type =
"dataverse")
在資料取得方面,最容易的方式就是先利用DOI來查詢該資料集所包含的文件:
get_dataset("doi:10.7910/DVN/ARKOTI")
#>
Dataset (75170):
#>
Version: 1.0, RELEASED
#>
Release Date: 2015-07-07T02:57:02Z
#>
License: CC0
#> 21
Files:
#> label version
id
#>
1 alpl2013.tab 2 2692294
#>
2 BPchap7.tab 2 2692295
#>
3 chapter01.R 2 2692202
#>
4 chapter02.R 2 2692206
#>
5 chapter03.R 2 2692210
#>
6 chapter04.R 2 2692204
#>
7 chapter05.R 2 2692205
#>
8 chapter06.R 2 2692212
#>
9 chapter07.R 2 2692209
#>
10 chapter08.R 2 2692208
#>
11 chapter09.R 2 2692211
#>
12 chapter10.R 1 2692203
#>
13 chapter11.R 1 2692207
#> 14
comprehensiveJapanEnergy.tab 2 2692296
#>
15 constructionData.tab 2 2692293
#>
16 drugCoverage.csv 1 2692233
#>
17 hanmerKalkanANES.tab 2
2692290
#>
18 hmnrghts.tab 2 2692298
#>
19 hmnrghts.txt 1 2692238
#>
20 levant.tab 2 2692289
#>
21 LL.csv 1 2692228
#>
22 moneyDem.tab 2 2692292
#>
23 owsiakJOP2013.tab 2 2692297
#>
24 PESenergy.csv 1 2692230
#>
25 pts1994.csv 1 2692229
#>
26 pts1995.csv 1 2692231
#>
27 sen113kh.ord 1 2692239
#>
28 SinghEJPR.tab 2 2692299
#>
29 SinghJTP.tab 2 2692288
#>
30 stdSingh.tab 2 2692291
#>
31 UN.csv 1 2692232
#>
32 war1800.tab 2 2692300
最後再利用文件的檔名即可將資料載入R:
f <- get_file(
"constructionData.tab",
"doi:10.7910/DVN/ARKOTI")
tmp <- tempfile(fileext =
".dta")
writeBin(as.vector(f), tmp)
dat2 <- foreign::read.dta(tmp)
除了檔名,也可以利用文件的id來取得資料:
f <- get_file(
2692293)
七、 參考文獻
1.
Introduction to Dataverse. (2019-06-01).
https://cran.r-project.org/web/packages/dataverse/vignettes/A-introduction.html.
2.
Harvard dataverse. (2019-06-01).
https://dataverse.harvard.edu/.
3.
The Dataverse project. (2019-06-01).
http://dataverse.org/.
4.
R Client for Dataverse 4
Repositories. (2019-06-01). https://github.com/iqss/dataverse-client-r
5.
TwoRavens. (2019-06-01). http://2ra.vn/
6.
Zelig Project. (2019-06-01). https://zeligproject.org/
7.
羅鵬程、朱玲、崔海媛、聶華。基於Dataverse的北京大學開放研究數據平台建設。圖書情報工作,2016,60(3):52-58。
太棒了。謝謝!
回覆刪除