gpt4 book ai didi

r - 根据 ID 在 R 中分配标签?

转载 作者:行者123 更新时间:2023-12-02 08:30:05 26 4
gpt4 key购买 nike

我有一个数据框如下:

DF<-data.frame(a=c(1,1,1,2,2,2,3,3,4,4),b=c(43,23,45,65,43,23,65,76,87,4))

a b
1 43
1 23
1 45
2 65
2 43
2 23
3 65
3 76
4 87
4 4

我想像这样设置一个标志:

a  b flag
1 43 A
1 23 B
1 45 C
2 65 A
2 43 B
2 23 C
3 65 A
3 76 B
4 87 A
4 4 B

如何在 R 中完成此操作?

最佳答案

使用dplyr

library(dplyr)
DF %>% group_by(a) %>% mutate(flag=LETTERS[row_number()])

使用 data.table(HT to @David Arenberg)

library(data.table)
setDT(DF)[, flag := LETTERS[1:.N], a]

一个即将成为经典的解决方案(@Roman Luštrik)

do.call("c", sapply(rle(DF$a)$lengths, FUN = function(x) LETTERS[1:x]))

附录

@akrun 建议在扩展 LETTERS 之后解决立即出现的问题“如果有超过 26 个组怎么办?” (@James)

Let <- unlist(sapply(1:3, function(i) do.call(paste0,expand.grid(rep(list(LETTERS),i)))))

LETTERSLet 替换时,上述所有代码仍保持完整功能。

关于r - 根据 ID 在 R 中分配标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com