我正在努力将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输出少。我错过了什么吗?
提前致谢。
答案 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.我是对的吗?
您的理解是正确的。