【发布时间】:2019-03-28 15:39:49
【问题描述】:
jrnlfile 是一个包含期刊名称和标识符的数据集。以下是前 6 个 obs:
id journal issn
56201 ACTA HAEMATOLOGICA 0001-5792
94365 ACTA PHARMACOLOGICA SINICA
10334 ACTA PHARMACOLOGICA SINICA 1671-4083
55123 ADVANCES IN ENZYME REGULATION 0065-2571
90002 AGING
10403 AGING 1945-4589
比较id 94365 和10334。这些obs 名称相同journal。他们需要相同的issn。 issn 缺失值的 obs 几乎总是 至少有一个伙伴 obs 包含匹配的 journal 名称和正确的 issn。无论这是真的,我想重新编码丢失的issn,以便它包含在其他提到相同journal 的情况下看到的issn。修改后的数据集 want 如下所示:
id journal issn
56201 ACTA HAEMATOLOGICA 0001-5792
94365 ACTA PHARMACOLOGICA SINICA 1671-4083
10334 ACTA PHARMACOLOGICA SINICA 1671-4083
55123 ADVANCES IN ENZYME REGULATION 0065-2571
90002 AGING 1945-4589
10403 AGING 1945-4589
我目前在数据步骤中使用 if-else 语句来填充缺失的 issn 值与 journal 的匹配条目:
data want;
set jrnlfile;
if journal = "ACTA PHARMACOLOGICA SINICA" then issn = "1671-4083";
else if journal = "AGING" then issn = "1945-4589";
/*continue for 7,000 other journals*/
run;
但是jrnlfile 包含 50,000 个 obs 和 7,000 个独特的期刊,所以这需要很多时间并且很容易出错。 This answer 让我走到了一半,但 issn 不是数字,我无法通过简单地向它添加值来解决问题。
从jrnlfile 到want 的更有效和系统的方法是什么?
【问题讨论】:
-
您能否按期刊对数据集进行排序,使您想用于 ISSN 的值在该期刊的第一次观察中?
by journal descending issn;