[英]Assign an ID based on two columns R
我有一些看起來像這樣的數據。 我想通過電子郵件和wk_id分配一個“ ID”。
row_num email wk_id
1 aaaa 1/4/15
2 aaaa 1/11/15
3 aaaa 1/25/15
4 bbbb 6/29/14
5 bbbb 9/7/14
6 cccc 11/16/14
7 cccc 11/30/14
8 cccc 12/7/14
9 cccc 12/14/14
10 cccc 12/21/14
11 cccc 12/28/14
12 cccc 1/4/15
13 cccc 1/25/15
我希望數據看起來像這樣。
row_num email wk_id ID
1 aaaa 1/4/15 1
2 aaaa 1/11/15 2
3 aaaa 1/25/15 3
4 bbbb 6/29/14 1
5 bbbb 9/7/14 2
6 cccc 11/16/14 1
7 cccc 11/30/14 2
8 cccc 12/7/14 3
9 cccc 12/14/14 4
10 cccc 12/21/14 5
11 cccc 12/28/14 6
12 cccc 1/4/15 7
13 cccc 1/25/15 8
我不知道如何在每次遇到新的電子郵件地址時重置“計數器”。 我已經嘗試過data.table
和ddply
但還是不太明白。
您可以嘗試:
library(dplyr)
df %>%
group_by(email) %>%
mutate(ID = row_number())
這使:
#Source: local data frame [13 x 4]
#Groups: email
#
# row_num email wk_id ID
#1 1 aaaa 1/4/15 1
#2 2 aaaa 1/11/15 2
#3 3 aaaa 1/25/15 3
#4 4 bbbb 6/29/14 1
#5 5 bbbb 9/7/14 2
#6 6 cccc 11/16/14 1
#7 7 cccc 11/30/14 2
#8 8 cccc 12/7/14 3
#9 9 cccc 12/14/14 4
#10 10 cccc 12/21/14 5
#11 11 cccc 12/28/14 6
#12 12 cccc 1/4/15 7
#13 13 cccc 1/25/15 8
或使用data.table
library(data.table)
setDT(df)[, ID:= 1:.N, email]
或ave
從base R
df$ID <- with(df, ave(row_num, email, FUN=seq_along))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.