SAS和R中的第一个和最后一个

时间:2014-02-17 05:57:24

标签: r if-statement sas

我正在努力将SAS代码转换为R,但我无法复制 IF First。 &安培; R中的Last。命令 SAS命令是 -

Data A;
Set B;
BY CompID, Id, Date;
IF First.Date;
run;

我的理解是,只选择CompID,ID和Date组合的最早日期并输出到数据A.我是对的吗?

我知道R中的重复命令但是如果我使用以下代码 -

A <- B[!duplicated(B$Date),]

我的观察结果比我的SAS输出少。我错过了什么吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

R中的构造可以是(因为还有duplicated.data.frame函数):

A <- B[!duplicated(B[ c('CompID', 'Id', 'Date') ] ) ,]

要复制.Last操作,请查看帮助页面中的重复项,我认为您会找到某种fromLast参数,但我总是需要检查其拼写。

结构:“我得到的观察次数少于......”对我来说听起来不对,但我没有去过所有英语国家。至少在美国,我认为“更少”或“更低的数量”会更容易阅读。

答案 1 :(得分:1)

首先,语句BY CompID, Id, Date;中不应包含任何逗号。

其次,A <- B[!duplicated(B$Date),]并不等同于您发布的SAS代码。

正确的等价物是:

Data A;
Set B;
BY Date;
IF First.Date;
run;
  

我的理解是,只有最早的CompID,ID和   选择日期组合并输出到数据A.我是对的吗?

您的理解是正确的。