从SAS到R-proc排序nodupkey

从SAS到R-proc排序nodupkey,r,duplicates,translate,R,Duplicates,Translate,我正在将SAS脚本传输到R,但我不知道SAS是如何工作的。。。 我有一段代码: proc sort data=table (keep= Field1 Field2 Field3 Field4 Field5) out=table_nodup nodupkey; by Field1 Field2 Field4; run; 我不知道代码会做什么,然后我也不知道如何将它翻译成R…有什么帮助吗?:) 给定数据帧表: table<- table[,c(Field1,Field2,Field3,

我正在将SAS脚本传输到R,但我不知道SAS是如何工作的。。。 我有一段代码:

proc sort data=table 
(keep= Field1 Field2 Field3 Field4 Field5) 
out=table_nodup nodupkey;
by Field1 Field2 Field4;
run;

我不知道代码会做什么,然后我也不知道如何将它翻译成R…有什么帮助吗?:)

给定数据帧

 table<- table[,c(Field1,Field2,Field3,Field4,Field5)]#keep specific columns 
 table_nodup<-unique(table[with(data, order(Field1, Field2, Field4))])#orders the data based on the 3 columns and select unique rows
table根据我的说法,它可以用
dplyr
描述如下:

library(dplyr)
table %>% 
    select(Field1, Field2, Field3, Field4, Field5) %>% 
    group_by(Field1, Field2, Field4) %>% 
    slice(1)

select
用于SAS的
keep
,然后可以将
nodupkey
转换为按
by
变量分组并取第一次出现的值。一件好事是,
slice
返回一个已经按所用组排序的数据帧,因此不需要
arrange

这将输出一个名为
table\u nodup
的数据集,该数据集只有
Field1-5
字段1、字段2、字段4的重复值将被删除,以便每个
字段1/2/4
组合只有一行。它将从字段3和字段5中获取哪个值?由于排序?代码转换导致的最低值与堆栈溢出无关。您需要以问题的形式询问代码做了什么,或者您是否知道代码做了什么,以问题的形式询问如何做(无论它做什么)。如果你问前者,请先做一些研究;您至少应该能够通过快速搜索找到基本信息。好的,首先它选择字段,然后按键对表进行排序,然后按键取出重复的数据…对于字段3和5,需要哪个值?由于排序的原因,最低的一个?Gawwd我讨厌SAS:(