2017-05-19 193 views
-1

我traslating一個SAS腳本於R,但我不知道如何SAS工作...... 我有這樣一段代碼:從SAS至R - PROC排序nodupkey

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

我不不知道代碼會做什麼,然後我不知道如何將它翻譯成R ...有什麼幫助? :)

+0

這將輸出一個名爲'table_nodup'的數據集,它只有'Field1 - 5'。將刪除「字段1,字段2,字段4」的重複值,以便每個「字段1/2/4」組合只有1行。 –

+0

以及從field3和field5獲取哪個值?由於排序最低的一個? –

+0

代碼轉換對於堆棧溢出而言是無關緊要的。你需要詢問代碼是做什麼的[tag:sas]問題,或者如果你知道代碼要做什麼(不管它做什麼)作爲[tag:r]問題。如果你問前者,請先做一些研究;您應該至少能夠通過快速搜索找到基本信息。 – Joe

回答

-1

考慮到數據幀table

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 
+0

好吧,首先它選擇字段,然後按鍵排序表,然後通過鍵取出重複的數據...以及字段3和5需要哪些值?由於排序最低的一個? –

+0

Gawwd我討厭SAS :( – amonk

1

根據this paper我會說這可以用dplyr如下描述:

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

select是SAS的keep,然後nodupkey可以被轉換成by變量的分組並且首先出現。一件好事是slice返回一個已經被使用的組排序的數據幀,因此不需要arrange