sas中的长数字读取

sas中的长数字读取,sas,Sas,我有一个很长的身份证号码(比如1218444799201211111)。通过使用csv文件中的proc导入,该数字会在数字之间加上“E”(1.2184448E19,格式为best12.和informat best32.),从而缩短自身。浏览这里,我知道csv格式本身缩短了它之前,所以它与SAS无关。所以我试着复制5个数字,使用datalines语句,结果也是一样的。。。。如果有人能建议我需要使用哪种格式,那将很有帮助。使用best32。格式我得不到原始数字,因为它很可能修改了修改后的数字,事实上

我有一个很长的身份证号码(比如1218444799201211111)。通过使用csv文件中的proc导入,该数字会在数字之间加上“E”(1.2184448E19,格式为best12.和informat best32.),从而缩短自身。浏览这里,我知道csv格式本身缩短了它之前,所以它与SAS无关。所以我试着复制5个数字,使用datalines语句,结果也是一样的。。。。如果有人能建议我需要使用哪种格式,那将很有帮助。使用best32。格式我得不到原始数字,因为它很可能修改了修改后的数字,事实上我得到的1218444799201211872不是我想要的数字。

我不确定csv是否会更改值(它们只是纯文本文件),除非您将excel电子表格保存为csv文件。如果您使用excel,只需将列设置为数字格式,无小数位数


将列导入SAS时,将其视为文本可能更容易—除非您需要对其执行数学运算!如果您确实需要将其保留为数字,请使用32格式。应该强制它是一个32位数字-最好是相当明智地将其转换为科学符号(尽管我怀疑数据在背景中,只是毫无帮助地显示出来)

有一个读取指数符号的SAS信息-Ew.d,其中w是宽度,d是小数位数。在您的情况下,它可能不会有帮助,因为您将“丢失”完整的数字-如果您使用此信息读取,则存储的值将为1.2184448*(10^19)。在您的情况下,唯一的方法是确保生成CSV文件的程序以正确的方式输出它。如果您是从Excel工作表创建数据,请在Excel工作表中设置数字格式,以正确显示所有数字。

因为您的ID变量实际上是一个标识符,而不是一个“实”数,所以需要将其作为字符串读入。示例中显示的值太大,无法表示为整数,因此,由于SAS将所有数字存储为浮点,因此会丢失“精度”

由于您提到使用PROC导入,请复制它生成的SAS程序,并将格式和信息规格从“21.”和“best32.”更改为“$32.”(或与数据匹配的任何值)


当然,最好的方法是让SAS访问PC文件格式,在这种情况下,您可以将列的格式设置为“文本”在Excel中,让SAS直接读取。

我认为您可能希望使用文件和输入语句来阅读此内容。如果其他建议没有帮助,请发布一些示例数据,我们可以帮助您手动读取文件。。而不是使用PROC IMPORT121844479920121111112184447992012111121844479920121111218444799201211112184447992012111121844479920121211111122 1218444799201211122 1218444799201211122 1218444799201211122 1218444799201211122 1218444799201211131 12184447992012111131 1218444799201211131 1218444799201211211 1218444799201211211这是我最初在excel中拥有的内容。我想在sas中准确地导入这些数字。因为我想使用proc方法并希望catogories我的研究写入这些ID。像第一个一样3是相同的类型,因此对应于这3行,我想为下一组同样计算不同研究变量的平均值。1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19 1.21844E+19^^将excel保存为csv格式后我得到的id s在科学记数法中是这样的。因此,在sas中导入此文件会给我相同的科学记数。当将id s分别放在sas中的数据线中时,我得到相同的结果。@谢谢……它解决了问题……我已将长的数字分成4部分,然后将它们全部转换为字符串,然后使用我加入了他们…瞧!!:)非常感谢@Bob