目前haven可以讀寫邏輯、整數、數字、字符和因子。請參閱 labelled()
了解如何在 R 中處理 Stata 中的標記變量。
如果任何組件為 strl_threshold
字節或更長(且 version
>= 13),則字符向量將存儲為 strL
;否則它們將被存儲為適當的 str#
。
用法
read_dta(
file,
encoding = NULL,
col_select = NULL,
skip = 0,
n_max = Inf,
.name_repair = "unique"
)
read_stata(
file,
encoding = NULL,
col_select = NULL,
skip = 0,
n_max = Inf,
.name_repair = "unique"
)
write_dta(
data,
path,
version = 14,
label = attr(data, "label"),
strl_threshold = 2045,
adjust_tz = TRUE
)
參數
- file
-
文件路徑、連接或文字數據(單個字符串或原始向量)。
以
.gz
、.bz2
、.xz
或.zip
結尾的文件將自動解壓縮。將自動下載以http://
、https://
、ftp://
或ftps://
開頭的文件。遠程gz文件也可以自動下載並解壓。文字數據對於示例和測試最有用。要被識別為文字數據,輸入必須用
I()
包裝,是包含至少一個換行符的字符串,或者是至少包含一個帶有換行符的字符串的向量。使用值
clipboard()
將從係統剪貼板讀取。 - encoding
-
文件使用的字符編碼。一般來說,僅 Stata 13 文件及更早版本需要。有關詳細信息,請參閱編碼部分。
- col_select
-
一個或多個選擇表達式,例如
dplyr::select()
。使用c()
或list()
來使用多個表達式。有關可用選擇選項的詳細信息,請參閱?dplyr::select
。僅從data_file
讀取指定的列。 - skip
-
讀取數據之前要跳過的行數。
- n_max
-
讀取的最大行數。
- .name_repair
-
有問題的列名的處理:
-
"minimal"
:沒有名稱修複或檢查,超出基本存在, -
"unique"
:確保名稱唯一且不為空, -
"check_unique"
:(默認值),沒有名稱修複,但檢查它們是unique
, -
"universal"
:命名為unique
和語法 -
函數:應用自定義名稱修複(例如,
.name_repair = make.names
用於基本 R 樣式的名稱)。 -
purrr-style 匿名函數,請參閱
rlang::as_function()
此參數作為
repair
傳遞到vctrs::vec_as_names()
。有關這些條款以及用於執行這些條款的策略的更多詳細信息,請參閱此處。 -
- data
-
要寫入的數據幀。
- path
-
將寫入數據的文件的路徑。
- version
-
要使用的文件版本。支持版本 8-15。
- label
-
要使用的數據集標簽,或
NULL
。默認為data
的 "label" 屬性中存儲的值。必須 <= 80 個字符。 - strl_threshold
-
如果
version
>= 13,則最大長度大於strl_threshold
字節的任何字符向量都將存儲為長字符串 (strL),而不是標準字符串 (str#) 變量。默認為 2045,即最大長度str# 變量。有關更多詳細信息,請參閱 Stata long string 文檔。 - adjust_tz
-
Stata、SPSS 和 SAS 沒有時區概念,所有 date-time 變量均被視為 UTC。
adjust_tz
控製寫入時如何處理日期時間值的時區。-
如果
TRUE
(默認),則忽略日期時間值的時區,並且它們將在 R 和 Stata/SPSS/SAS 中顯示相同的內容,例如"2010-01-01 09:00:00 NZDT"
將寫為"2010-01-01 09:00:00"
。請注意,這會更改基礎數值數據,因此如果保留 between-time-point 差異至關重要,請務必小心。 -
如果
FALSE
,日期時間值將寫入相應的 UTC 值,例如"2010-01-01 09:00:00 NZDT"
將寫為"2009-12-31 20:00:00"
。
-
值
一個 tibble DataFrame 變體,具有很好的默認值。
變量標簽存儲在每個變量的"label"屬性中。它不會打印在控製台上,但 RStudio 查看器會顯示它。
如果在 Stata 中定義了數據集標簽,它將存儲在 tibble 的 "label" 屬性中。
write_dta()
以不可見方式返回輸入data
。
字符編碼
在 Stata 14 之前,文件沒有聲明文本編碼,並且默認編碼在不同平台上有所不同。如果 encoding = NULL
,haven 假定編碼為 windows-1252,這是 Windows 上 Stata 使用的文本編碼。不幸的是 Mac 和 Linux 上的 Stata 使用不同的默認編碼"latin1"。如果遇到諸如“無法將字符串轉換為請求的編碼”之類的錯誤,請嘗試encoding = "latin1"
對於 Stata 14 及更高版本,您不需要手動指定 encoding
值,除非該值被錯誤地記錄在源文件中。
例子
path <- system.file("examples", "iris.dta", package = "haven")
read_dta(path)
#> # A tibble: 150 × 5
#> sepallength sepalwidth petallength petalwidth species
#> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 5.10 3.5 1.40 0.200 setosa
#> 2 4.90 3 1.40 0.200 setosa
#> 3 4.70 3.20 1.30 0.200 setosa
#> 4 4.60 3.10 1.5 0.200 setosa
#> 5 5 3.60 1.40 0.200 setosa
#> 6 5.40 3.90 1.70 0.400 setosa
#> 7 4.60 3.40 1.40 0.300 setosa
#> 8 5 3.40 1.5 0.200 setosa
#> 9 4.40 2.90 1.40 0.200 setosa
#> 10 4.90 3.10 1.5 0.100 setosa
#> # ℹ 140 more rows
tmp <- tempfile(fileext = ".dta")
write_dta(mtcars, tmp)
read_dta(tmp)
#> # A tibble: 32 × 11
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
#> # ℹ 22 more rows
read_stata(tmp)
#> # A tibble: 32 × 11
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
#> 2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
#> 3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
#> 4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
#> 5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
#> 6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
#> 7 14.3 8 360 245 3.21 3.57 15.8 0 0 3 4
#> 8 24.4 4 147. 62 3.69 3.19 20 1 0 4 2
#> 9 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2
#> 10 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4
#> # ℹ 22 more rows
相關用法
- R haven read_xpt 讀寫 SAS 傳輸文件
- R haven read_sas 讀取 SAS 文件
- R haven read_spss 讀取和寫入 SPSS 文件
- R haven zap_missing 將特殊缺失修改為常規 R 缺失
- R haven print_labels 打印帶標簽向量的標簽
- R haven tagged_na “標記”缺失值
- R haven zap_label Zap 變量標簽
- R haven labelled 創建一個標記向量。
- R haven as_factor 將標記向量轉換為因子
- R haven zap_empty 將空字符串轉換為缺失值
- R haven labelled_spss SPSS 的標記向量
- R haven zap_labels Zap值標簽
- R SparkR hashCode用法及代碼示例
- R hms hms 用於存儲一天中的時間值的簡單類
- R SparkR hint用法及代碼示例
- R hms parse_hms 解析 hms 值
- R SparkR histogram用法及代碼示例
- R SparkR head用法及代碼示例
- R hms round_hms 四舍五入或截斷為秒的倍數
- R dtrMatrix-class 三角形稠密數值矩陣
- R vcov.gam 從 GAM 擬合中提取參數(估計器)協方差矩陣
- R gam.check 擬合 gam 模型的一些診斷
- R ggplot2 annotation_logticks 注釋:記錄刻度線
- R matrix轉list用法及代碼示例
- R Pixel X 射線像素強度隨時間的變化
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Read and write Stata DTA files。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。