gpt4 book ai didi

r - 查找所有重复索引并将它们写入新列

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

我有一个包含单列的 data.frame,一个字符串向量。

这些字符串有重复的值。我想在这个向量中找到重复的字符串,并将它们的位置索引写在新列中。

例如考虑我有:

DT<- data.frame(string=A,B,C,D,E,F,A,C,F,Z,A)

我想得到:

string match2 match2 match3 matchx....
A 1 7 11
B 2 NA NA
C 3 8 NA
D 4 NA NA
E 5 NA NA
F 6 9 NA
A 1 7 11
C 3 8 NA
F 6 9 NA
Z 10 NA NA
A 1 7 11

字符串比本例中的长很多,我不知道我需要的最大列数。

最有效的方法是什么?我知道有重复函数,但我不确定如何将它与我想要得到的结果结合起来。

非常感谢!

最佳答案

这是执行此操作的一种方法。我确定后面有一个 data.table。

DT<- data.frame(string=c("A","B","C","D","E","F","A","C","F","Z","A"))

# find matches
rbf <- sapply(DT$string, FUN = function(x, DT) which(DT %in% x), DT = DT$string)

# fill in NAs to have a pretty matrix
out <- sapply(rbf, FUN = function(x, mx) c(x, rep(NA, length.out = mx - length(x))), max(sapply(rbf, length)))

# bind it to the original data
cbind(DT, t(out))

string 1 2 3
1 A 1 7 11
2 B 2 NA NA
3 C 3 8 NA
4 D 4 NA NA
5 E 5 NA NA
6 F 6 9 NA
7 A 1 7 11
8 C 3 8 NA
9 F 6 9 NA
10 Z 10 NA NA
11 A 1 7 11

关于r - 查找所有重复索引并将它们写入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679527/

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