gpt4 book ai didi

json - 在 SAS 中导入单行 json 文件

转载 作者:行者123 更新时间:2023-12-01 00:48:24 27 4
gpt4 key购买 nike

我有以下 json 格式的数据:

{"metadata1":"val1","metadata2":"val2","data_rows":[{"var1":1,"var2":2,"var3":3},{"var1":4,"var2":5,"var3":6}]}

开头有一些元数据变量,只出现一次,后面跟着多条数据记录,都在同一行。如何将其导入 SAS 数据集?

最佳答案

/*Create json file containing sample data*/
filename json "%sysfunc(pathname(work))\json.txt";
data _null_;
file json;
put '{"metadata1":"val1,","metadata2":"val2}","data_rows":[{"var1":1,"var2":2,"var3":3},{"var1":4,"var2":5,"var3":6}]}';
run;

/*Data step for importing the json file*/
data want;
infile json dsd dlm='},' lrecl = 1000000 n=1;
retain metadata1 metadata2;
if _n_ = 1 then input @'metadata1":' metadata1 :$8. @'metadata2":' metadata2 :$8. @;
input @'var1":' var1 :8. @'var2":' var2 :8. @'var3":' var3 :8. @@;
run;

注意事项:

  • SAS 开始读取每个变量的点是使用@'string' 逻辑设置的。
  • 设置为分隔符并在输入语句上使用 : 格式修饰符告诉 SAS 从指定的起点继续读取字符直到读取到最大请求数或达到分隔符。
  • 在 infile 语句上设置 dsd 会从字符数据值中删除双引号,并防止在字符变量包含定界符时发生任何问题。
  • 双尾 @ 告诉 SAS 使用相同的逻辑继续从同一行读取更多记录,直到到达行尾。
  • 元数据变量作为特殊情况使用单独的输入语句进行处理。如果需要,它们可以很容易地转移到单独文件中的一行。
  • lrecl 需要大于或等于您的文件的长度,此方法才能起作用。
  • 如果您的文件非常大,设置 n=1 应该有助于减少内存使用,方法是防止 SAS 尝试缓冲多个输入行。

关于json - 在 SAS 中导入单行 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com