如何在不删除格式的情况下将格式化的“.sas7bdat”文件导入到“R”中?

穆罕默德·拉胡马 |

当我检查这个链接时,我仍然在努力将格式化的 sas 文件导入 R,因为我有一个格式化的 .sas7bdat 文件(附在这里)但是当我尝试将它导入时,R我注意到所有格式都丢失了。我使用了 2 个不同的代码:

## Code 1:
##========
library(haven)
data <- read_sas("C:/Users/mmr2011/OneDrive/R codes/df_nsclc1.sas7bdat", NULL)

## Code 2:
##========
library(sas7bdat)
data("sas7bdat.sources")

data<-read.sas7bdat("C:/Users/mmr2011/OneDrive/R codes/df_nsclc1.sas7bdat", debug= F)

table(data$SEX) # gives me 1 and 2 instead of males and females
#     1      2 
#880916 799960 

# Then I tried this code (as I have sas catalog folder named format so I added that to my prior code; formats.sas7bcat) as follows
#===============================================================================
data<- read_sas("C:/Users/mmr2011/OneDrive/OneDrive/R codes/df_nsclc1.sas7bdat", catalog_file = "C:/Users/mmr2011/OneDrive/OneDrive/R codes/formats.sas7bcat") 

# table(data$SEX)
#   1     2 
#50190 66064 

天堂导入数据 非天堂导入数据

在此处输入图片说明

虽然我需要他们像他们在 sas 中一样,如下所示 在此处输入图片说明

我正在使用 SAS 目录文件夹Windows,如下所示(截图 5)。此外,它是可用的here 在此处输入图片说明

任何建议将不胜感激

我认为您遇到的问题很可能是误解了 R 标签的工作方式。

当我使用以下 SAS 代码时:

libname temp 'h:\temp\';
proc format lib=temp;
  value sexf
  1='Female'
  2='Male'
  ;
  value racef
  1='Black'
  2='Asian'
  3='White'
  4='Other'
  ;
  value hispf
  1='Of Hispanic Origin'
  2='Not of Hispanic Origin'
  ;
quit;
options fmtsearch=(temp);
data temp.rtest;
  input sex race hisp;
  format sex sexf. race racef. hisp hispf.;
datalines;
1 1 1
2 1 1
1 2 1
2 2 1
1 3 1
2 3 1
1 4 1
2 4 1
1 1 2
2 1 2
1 2 2
2 2 2
1 3 2
2 3 2
1 4 2
2 4 2
;;;;
run;

And then use the following R code:

library(haven)
data <- read_sas("H:/temp/rtest.sas7bdat", catalog_file="H:/temp/formats.sas7bcat")   
print(data)

It works as expected - the console prints the labelled text.

# A tibble: 16 x 3
          sex      race                       hisp
    <dbl+lbl> <dbl+lbl>                  <dbl+lbl>
 1 1 [Female] 1 [Black] 1 [Of Hispanic Origin]    
 2 2 [Male]   1 [Black] 1 [Of Hispanic Origin]    
 3 1 [Female] 2 [Asian] 1 [Of Hispanic Origin]    
 4 2 [Male]   2 [Asian] 1 [Of Hispanic Origin]    
 5 1 [Female] 3 [White] 1 [Of Hispanic Origin]    
 6 2 [Male]   3 [White] 1 [Of Hispanic Origin]    
 7 1 [Female] 4 [Other] 1 [Of Hispanic Origin]    
 8 2 [Male]   4 [Other] 1 [Of Hispanic Origin]    
 9 1 [Female] 1 [Black] 2 [Not of Hispanic Origin]
10 2 [Male]   1 [Black] 2 [Not of Hispanic Origin]
11 1 [Female] 2 [Asian] 2 [Not of Hispanic Origin]
12 2 [Male]   2 [Asian] 2 [Not of Hispanic Origin]
13 1 [Female] 3 [White] 2 [Not of Hispanic Origin]
14 2 [Male]   3 [White] 2 [Not of Hispanic Origin]
15 1 [Female] 4 [Other] 2 [Not of Hispanic Origin]
16 2 [Male]   4 [Other] 2 [Not of Hispanic Origin]

However, if I view it in RStudio's viewer by double-clicking on the dataset in the Data pane, it doesn't, and that is what you pasted into the question (a picture of that). I don't believe that's supported (variable labels are, meaning column header labels, but not value labels); if you want to verify that you may want to ask a new question specifically mentioning that, with the code here cleaned up (you're welcome to use my example code).

您可能想要做的是将值标签转换为factors。这可以通过几种方式完成;标记的包文档中有一些关于为什么的讨论,这是您可以使用的一件事,但有几种方法。同样,如果您自己无法弄清楚,这将是一个很好的单独问题。因素是 R 通常如何管理此类事情(即分类变量)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将SAS7BDAT文件目录导入SQL Server

如何在不破坏MVC的情况下将格式化的文本保存在控制器中?

sas7bdat日期格式为R日期格式

将SAS sas7bdat数据读入R

如何在没有熊猫的情况下读取,格式化,排序和保存csv文件?

在 C# 中,如何在不延长负值的情况下使用零填充格式化整数?

如何将这种格式化的txt文件导入到SQL Server表中

如何在不删除现有对象的情况下将新对象存储在arraylist中

如何在不格式化为字符串的情况下获取 24 中的时间

如何在R中没有TZ信息的情况下格式化Index()?

SAS7BDAT导入Python后如何修复捷克语言字符

在免费的SAS University Edition中,将.sas7bdat转换为.csv

如何在不更改任何格式的情况下删除文件中的特定列

如何在不删除命令内容的情况下将命令的输出重定向到现有文件?

实用程序“ fio”如何在未格式化的原始设备上没有文件系统的情况下执行类似于VFS的操作?

如何在不使用格式化字符串文字的情况下保证Java中的两位数月份?

如何在不更改格式的情况下从稀疏数据框中删除行

如何在不删除Java中任何旧数据的情况下将新信息添加到.txt文件

如何在不删除先前数据的情况下将新数据附加到.csv文件中

如何在不删除R中的行的情况下将一列向下移动

如何在不删除指定文件的情况下反转目录中的删除文件

如何从sas7bdat获取变量名和标签到data.frame中

如何在不删除第一行的情况下将标题添加到 DataFrame 中?

如何在不删除左侧单元格中的数据的情况下将列向左移动?

如何在保持格式不变的情况下将表格/交叉表从 r 导出到 excel

如何在没有ProtoBuf格式错误的情况下将数据加载到BigQuery中?

如何在不保留格式的情况下将格式文本从Visual Studio复制到Visio?

PHP Storm:如何在不删除文件的情况下删除项目

如何在不删除其中的文件的情况下删除 git repo