如何在sas中的r中实现子集?

时间:2018-08-16 06:52:45

标签: r sas

enter image description here

嗨! 有两个共享日期列和ID列的DFS。 df_1有一个特定ID的行,而df_2具有该ID的多行。  在df_2中,我要提取与df_1第一行的ID匹配的行,然后仅重新提取少于df_1第一行中的日期的行。 我要对df_1的整个行重复此过程。 而且我想使用rbind将其捆绑为一个数据。

R中的代码

df_3 <- data.frame()

for (i in 1:nrow(df_1)){
    x <- subset(df_2, id == df_1[['id']][i])
    y <- subset(x, date < df_1[['date']][i])
    df_3 <- rbind(df_3, y)
}

我怎么在sas中做到这一点?

请帮助我。

1 个答案:

答案 0 :(得分:0)

您可以使用proc iml来实现该功能,如下所示:

   proc iml;
/* id - first colum */
/* date - second column */

df_1 = {102 20180102, 103 20180105, 104 20180108};
df_2 = {102 20180101, 102 20180103, 103 20180103, 103 20180107,
        104 20180101, 104 20180102, 104 20180103};

free df_3;

do i = 1 to nrow(df_1);
  x = df_2[loc(df_2[, 1] = df_1[i, 1]), ];
  y = x[loc(x[, 2] < df_1[i, 2]), ];
  df_3 = df_3 // y;
end;

print df_1 df_2 df_3;

输出:

SAS Output