2015-10-14 80 views
1

假設最大間隔一年我有10年的時間,並關聯到它像下面的名稱,找到R中

Name Year 
A 1990 
B 1991 
C 1992 
A 1993 
A 1994 
. 
. 
. 

我想找到已經停止使用時間最長的名稱。

任何人都可以幫助我如何做到這一點?

+0

通過那你的意思是要發現1990年和1993年之間的「差距」的名稱爲「A」? – Larsenal

+0

@Larsenal是的。假設我有100000個名字,我想找到那個年代最大的名字。 – haimen

+1

你的意思是你想要結果是'B',因爲它已經有24年了? –

回答

1

使用dplyr

library(dplyr) 
mutate(your_data, max_year = max(Year)) %>% 
    group_by(Name) %>% 
    summarize(most_recent = max(Year), 
       unused_length = first(max_year) - most_recent) %>% 
    ungroup() %>% 
    arrange(most_recent) 

這將通過其最近的使用順序的名字,最早的最近一次使用第一。

如果您只關心如何獲取那個最不使用的名稱,您只需要結果的第一行。添加slice(1)到鏈像這樣:

mutate(your_data, max_year = max(Year)) %>% 
    group_by(Name) %>% 
    summarize(most_recent = max(Year), 
       unused_length = first(max_year) - most_recent) %>% 
    ungroup() %>% 
    arrange(most_recent) %>% 
    slice(1) 
+0

我收到一個錯誤「Error:could not find function」%>%「 – haimen

+0

添加了'library(dplyr)',再試一次 – Gregor

+0

嘗試'install.packages(」magrittr「 )' – maRtin