2016-07-24 27 views
0

我已經展示了下面子集化每個元素的第一行中的變量

Name ID DATES R 1 @0CC 71476 20000704 11 2 @0CC 71476 20001204 11 3 @0RM 49960 20000131 2 4 @0RM 73565 20000919 1 5 @0RM 59451 20001023 1 6 @0RM 44457 20001214 1 7 @0TL 48061 20000627 31 8 @0TL 19824 20000929 3 9 @0TL 70970 20001211 1 10 @0TL 73862 20001212 2 11 @0TL 48061 20001227 31 12 @1AJ 58875 20001214 1 13 @1AJ 56014 20001214 3 14 @1AJ 47340 20001214 3 15 @1AJ 19813 20001214 3 16 @1AL 44416 20000303 31 17 @1AL 59184 20000413 323 18 @1AL 44416 20000517 31 19 @1AL 52718 20000621 1 20 @1AL 59184 20000707 323 21 @1AL 59184 20000801 323 22 @1AL 72832 20001127 43 23 @1AL 73568 20001130 3 24 @1AL 72832 20001211 43 25 @1FF 58781 20000719 1 26 @1FF 44505 20000801 12 27 @1FF 73559 20001110 1 28 @1FF 44505 20001218 12 29 @1FF 47276 20001227 3

此數據集是我想要做的是,每個唯一的名字,每一個獨特的ID,我想創建該數據幀的一個子集,如

Name ID DATES R 1 @0CC 71476 20000704 11 3 @0RM 49960 20000131 2 4 @0RM 73565 20000919 1 5 @0RM 59451 20001023 1 6 @0RM 44457 20001214 1 7 @0TL 48061 20000627 31 8 @0TL 19824 20000929 3 9 @0TL 70970 20001211 1 10 @0TL 73862 20001212 2 12 @1AJ 58875 20001214 1 13 @1AJ 56014 20001214 3 14 @1AJ 47340 20001214 3 15 @1AJ 19813 20001214 3 16 @1AL 44416 20000303 31 17 @1AL 59184 20000413 323 19 @1AL 52718 20000621 1 22 @1AL 72832 20001127 43 23 @1AL 73568 20001130 3 25 @1FF 58781 20000719 1 26 @1FF 44505 20000801 12 27 @1FF 73559 20001110 1 29 @1FF 47276 20001227 3

我想用兩個for循環

但這並沒有給我正確的解決方案。很多幫助表示讚賞。

謝謝!

+0

@Frank感謝您指出的重複,我是通過該線程讀,我想''DF1 [!複製(DF1 [C( 「姓名」,「在查看@akrun解決方案後'''']]),]''不能工作,但''唯一(setDT(df1),by = c(「Name」,「ID」))''。非常感謝您的幫助。 – Donkeykongy

回答

2

我們可以通過 '名' 和 'ID' 分組後使用slicedplyr

library(dplyr) 
df1 %>% 
    group_by(Name, ID) %>% 
    slice(1) 

還是一個base R選擇是

df1[!duplicated(df1[c("Name", "ID")]),] 

或者使用data.table

library(data.table) 
unique(setDT(df1), by = c("Name", "ID")) 

或者作爲@Frank建議

setDT(df1)[, .SD[1L], by = .(Name, ID)] 
+1

@Frank是的,我認爲它更快。感謝您的提示 – akrun

+1

非常感謝您的幫助! – Donkeykongy

相關問題