使用 dplyr 按顺序标记每个唯一值
Sequentially label each unique value using dplyr
我正在寻找一种方法来按顺序标记列中的每个唯一事件。
例如,
df
x
1 A
2 A
3 B
4 C
5 C
6 D
会导致:
df
x event
1 A 1
2 A 1
3 B 2
4 C 3
5 C 3
6 D 4
我发现我可以使用
这样的循环来做到这一点
events <- unique(df$x)
for(i in 1:length(events){
df$event[df$x == events[i]] <- i
}
但如果可能的话,我想找到一个 dpylr 解决方案。
试试这个:
# example data
set.seed(123)
df <- data.frame(
x = sample(LETTERS[1:5], 10, replace = TRUE)
)
df <- df[order(df$x), , drop = FALSE]
# Label unique event
df$event <- as.numeric(factor(df$x))
df
#> x event
#> 8 A 1
#> 3 B 2
#> 4 B 2
#> 9 B 2
#> 1 C 3
#> 2 C 3
#> 5 C 3
#> 10 C 3
#> 7 D 4
#> 6 E 5
由 reprex package (v2.0.1)
于 2021-11-26 创建
给你:
df <- tibble(x= c("A", "A","B","C","C","D"))
df1 <- tibble(x = unique(df$x),
event = seq(1,length(x),1))
res <- left_join(df, df1, by="x")
我正在寻找一种方法来按顺序标记列中的每个唯一事件。
例如,
df
x
1 A
2 A
3 B
4 C
5 C
6 D
会导致:
df
x event
1 A 1
2 A 1
3 B 2
4 C 3
5 C 3
6 D 4
我发现我可以使用
这样的循环来做到这一点events <- unique(df$x)
for(i in 1:length(events){
df$event[df$x == events[i]] <- i
}
但如果可能的话,我想找到一个 dpylr 解决方案。
试试这个:
# example data
set.seed(123)
df <- data.frame(
x = sample(LETTERS[1:5], 10, replace = TRUE)
)
df <- df[order(df$x), , drop = FALSE]
# Label unique event
df$event <- as.numeric(factor(df$x))
df
#> x event
#> 8 A 1
#> 3 B 2
#> 4 B 2
#> 9 B 2
#> 1 C 3
#> 2 C 3
#> 5 C 3
#> 10 C 3
#> 7 D 4
#> 6 E 5
由 reprex package (v2.0.1)
于 2021-11-26 创建给你:
df <- tibble(x= c("A", "A","B","C","C","D"))
df1 <- tibble(x = unique(df$x),
event = seq(1,length(x),1))
res <- left_join(df, df1, by="x")