我有一个数据集,其中我必须对十几个组织的十几个变量运行频率。使用 proc print 很容易,但我不想多次更新 WHERE 语句...
我有一个数据集,其中我必须对十几个组织的十几个变量运行频率。使用 proc print 可以很容易地做到这一点,但我不想为了运行每个频率而更新 WHERE 语句十几次,所以我希望使用宏来简化此过程。
作为示例,我们可以使用 sashelp.cars 数据集,其中每个汽车制造商运行两个变量的频率(为简单起见)。
我编写了一个宏,希望迭代一个简单的 proc 频率,如下所示,不同之处在于该宏会遍历 WHERE 语句中的汽车制造商 \'make\' 列表并运行指定的频率。
proc freq data=sashelp.cars;
table Type DriveTrain;
where make = "Honda";
run;
这是我写的宏:
%macro car_freq(dataset, n_make);
%do i = 1 %to &n_make;
%let maker = %scan(make., &i);
title "&maker";
proc freq data=&dataset;
where make = "&maker";
tables type DriveTrain;
run;
title;
%end;
%mend car_freq;
%car_freq(sashelp.cars, 38)
当我运行宏时,它运行没有错误,但显示每次迭代有 0 个观察值。我缺少什么来让它遍历制造商列表并运行两个变量的频率?
我有一个数据集,其中包含一个 ID 列和一个要下载的 URL 列,每个 ID 有 2 个 URL,我想要下载每两个 URL 并将它们转换为一个以其 ID 命名的 PDF 文件。我想要一个...
我有一个数据集,其中包含 ID 列和要下载的 URL 列,每个 ID 有 2 个 URL,我想要下载每两个 URL 并将它们转换为一个以其 ID 命名的 PDF 文件。我想要每个 ID 一个 PDF。
# demo dataset
df <- data.frame(ID = c(1,1,2,2,3,3),
Full_Path = c("https://test1.png","https://test1.png",
"https://test1.png","https://test1.png",
"https://test1.png","https://test1.png"))
for (url in df$Full_Path) {
download.file(url, destfile = basename(url), method="curl", extra="-k", mode="wb")
fl = list.files(full.names = T, pattern = '.png')
img = image_read(fl) # read from vector of paths
img2 = image_append(img, stack = TRUE) # places pics above one another
image_write(img2, format="pdf", file.path(dir,paste('IMG',today(),'.pdf')))
}
unlink(fl)
但在这个循环之后,所有内容都打印在一个 PDF 中,我希望每个 ID 都有一个 pdf