You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助SAS代码实现用R读取.dat格式文件?

将SPARCS_DIAG.dat导入R的代码实现

核心参数解析(从SAS代码提取)

  • 分隔符:管道符 |
  • 跳过首行(表头行)
  • 启用DSD模式:自动处理带引号的字段(若字段内包含分隔符)
  • 变量类型:大部分为字符型,仅seq_id为数值型;日期字段(如processed_dt)为8位字符格式(YYYYMMDD)

方案1:使用readr包(推荐,高效且易用)

先确保安装并加载readr包:

# 安装包(首次使用)
install.packages("readr")
# 加载包
library(readr)

读取数据的代码:

# 设置文件路径,替换为你的实际路径
file_path <- "./SPARCS_Extract/SPARCS_DIAG.dat"

# 读取数据,指定分隔符、跳过首行、变量类型
sparcs_diag <- read_delim(
  file = file_path,
  delim = "|",
  skip = 1,  # 对应SAS的firstobs=2
  col_types = cols(
    clm_trans_id = col_character(),
    disch_yr = col_character(),
    dx_type_cd = col_character(),
    seq_id = col_double(),  # 对应SAS的8.数值型
    clm_type_cd = col_character(),
    upide = col_character(),
    dx_catgy_cd = col_character(),
    dx_grp_cd = col_character(),
    dx_cd = col_character(),
    poa_ind = col_character(),
    DX_VERS_TYPE_CD = col_character(),
    clm_key = col_character(),
    actv_flag = col_character(),
    ltst_flag = col_character(),
    processed_dt = col_character(),
    created_by = col_character(),
    last_updd_dt = col_character(),
    last_updd_by = col_character(),
    src_nm = col_character(),
    insert_row_dt = col_character(),
    abort_ind = col_character(),
    hiv_ind = col_character()
  )
)

# 可选:将日期字段转换为R日期格式
library(lubridate)
sparcs_diag <- sparcs_diag %>%
  mutate(
    processed_dt = ymd(processed_dt),
    last_updd_dt = ymd(last_updd_dt),
    insert_row_dt = ymd(insert_row_dt)
  )

方案2:使用Base R的read.table

# 设置文件路径
file_path <- "./SPARCS_Extract/SPARCS_DIAG.dat"

# 读取数据
sparcs_diag <- read.table(
  file = file_path,
  sep = "|",
  skip = 1,
  header = FALSE,  # 首行是表头但我们跳过,后续手动命名
  stringsAsFactors = FALSE,
  quote = "\"",  # 对应SAS的DSD模式
  col.names = c(
    "clm_trans_id", "disch_yr", "dx_type_cd", "seq_id",
    "clm_type_cd", "upide", "dx_catgy_cd", "dx_grp_cd",
    "dx_cd", "poa_ind", "DX_VERS_TYPE_CD", "clm_key",
    "actv_flag", "ltst_flag", "processed_dt", "created_by",
    "last_updd_dt", "last_updd_by", "src_nm", "insert_row_dt",
    "abort_ind", "hiv_ind"
  ),
  colClasses = c(
    rep("character", 3), "numeric", rep("character", 18)
  )
)

# 可选:转换日期字段
sparcs_diag$processed_dt <- as.Date(sparcs_diag$processed_dt, format = "%Y%m%d")
sparcs_diag$last_updd_dt <- as.Date(sparcs_diag$last_updd_dt, format = "%Y%m%d")
sparcs_diag$insert_row_dt <- as.Date(sparcs_diag$insert_row_dt, format = "%Y%m%d")

内容的提问来源于stack exchange,提问作者InfiniteRecursion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:18:21