如何在 R 的数据框中将第一个唯一记录标记(标记)为 1 并将其余类似记录标记为 0
How can I mark (flag) first unique record as 1 and the rest similar records as 0 in data frame in R
我需要有关 R 中数据的帮助。如果我至少有一条记录,我将创建新列。
我的数据 (df) 如下所示:
date adress
28.03 bla
28.03 xyz
17.03 abc
30.03 yxz
24.03 bla
17.03 abc
23.03 abc
28.03 bla
24.03 bla
24.03 bla
我想创建新的驾驶列,如果日期和地址相同,则设置 1(在第一个发现的记录中)。如果有人在同一个地方去另一个时间(日期),设置1,但如果有人去同一个地方和日期将再次设置0.
像这样:
date adress drive
28.03 bla 1
28.03 xyz 1
17.03 abc 1
30.03 yxz 1
24.03 bla 1
17.03 abc 0
23.03 abc 1
28.03 bla 0
24.03 bla 0
24.03 bla 0
我使用 dplyr:
df2 <- df %>%
group_by(date, adress) %>%
mutate(drive = ifelse(n()>1, 0, 1))
我得到的数据如下,我的第一个发现的记录也是0。
date adress drive
28.03 bla 0
28.03 xyz 1
17.03 abc 0
30.03 yxz 1
24.03 bla 0
17.03 abc 0
23.03 abc 1
28.03 bla 0
24.03 bla 0
24.03 bla 0
有什么想法吗?
使用duplicated
。如果重复记录它 returns 1 否则 0,因此 !
bang 运算符。 + 在逻辑将其转换为数字之前。
df %>% mutate(drive = +!duplicated(paste(date, adress)))
date adress drive
1 28.03 bla 1
2 28.03 xyz 1
3 17.03 abc 1
4 30.03 yxz 1
5 24.03 bla 1
6 17.03 abc 0
7 23.03 abc 1
8 28.03 bla 0
9 24.03 bla 0
10 24.03 bla 0
我需要有关 R 中数据的帮助。如果我至少有一条记录,我将创建新列。 我的数据 (df) 如下所示:
date adress
28.03 bla
28.03 xyz
17.03 abc
30.03 yxz
24.03 bla
17.03 abc
23.03 abc
28.03 bla
24.03 bla
24.03 bla
我想创建新的驾驶列,如果日期和地址相同,则设置 1(在第一个发现的记录中)。如果有人在同一个地方去另一个时间(日期),设置1,但如果有人去同一个地方和日期将再次设置0.
像这样:
date adress drive
28.03 bla 1
28.03 xyz 1
17.03 abc 1
30.03 yxz 1
24.03 bla 1
17.03 abc 0
23.03 abc 1
28.03 bla 0
24.03 bla 0
24.03 bla 0
我使用 dplyr:
df2 <- df %>%
group_by(date, adress) %>%
mutate(drive = ifelse(n()>1, 0, 1))
我得到的数据如下,我的第一个发现的记录也是0。
date adress drive
28.03 bla 0
28.03 xyz 1
17.03 abc 0
30.03 yxz 1
24.03 bla 0
17.03 abc 0
23.03 abc 1
28.03 bla 0
24.03 bla 0
24.03 bla 0
有什么想法吗?
使用duplicated
。如果重复记录它 returns 1 否则 0,因此 !
bang 运算符。 + 在逻辑将其转换为数字之前。
df %>% mutate(drive = +!duplicated(paste(date, adress)))
date adress drive
1 28.03 bla 1
2 28.03 xyz 1
3 17.03 abc 1
4 30.03 yxz 1
5 24.03 bla 1
6 17.03 abc 0
7 23.03 abc 1
8 28.03 bla 0
9 24.03 bla 0
10 24.03 bla 0