gpt4 book ai didi

r - 用数字将相似的字符串分组并保持首次出现的顺序

转载 作者:行者123 更新时间:2023-12-05 01:22:39 24 4
gpt4 key购买 nike

我有一个数据框,看起来像这个例子(只是大得多):

var <- c('Peter','Ben','Mary','Peter.1','Ben.1','Mary.1','Peter.2','Ben.2','Mary.2')
v1 <- c(0.4, 0.6, 0.7, 0.3, 0.9, 0.2, 0.4, 0.6, 0.7)
v2 <- c(0.5, 0.4, 0.2, 0.5, 0.4, 0.2, 0.1, 0.4, 0.2)
df <- data.frame(var, v1, v2)

var v1 v2
1 Peter 0.4 0.5
2 Ben 0.6 0.4
3 Mary 0.7 0.2
4 Peter.1 0.3 0.5
5 Ben.1 0.9 0.4
6 Mary.1 0.2 0.2
7 Peter.2 0.4 0.1
8 Ben.2 0.6 0.4
9 Mary.2 0.7 0.2

我想根据不带后缀的名称对 'var' 中的字符串进行分组,并保留首次出现的原始顺序。期望的输出:

      var  v1  v2
1 Peter 0.4 0.5 # Peter appears first in the original data
2 Peter.1 0.3 0.5
3 Peter.2 0.4 0.1
4 Ben 0.6 0.4 # Ben appears second in the original data
5 Ben.1 0.9 0.4
6 Ben.2 0.6 0.4
7 Mary 0.7 0.2 # Mary appears third in the original data
8 Mary.1 0.2 0.2
9 Mary.2 0.7 0.2

我怎样才能实现这一目标?

谢谢!

最佳答案

带有 subdata.table::chgroup 的紧凑选项

df[chgroup(sub("\\..", "", df$var)),]

var v1 v2
1 Peter 0.4 0.5
4 Peter.1 0.3 0.5
7 Peter.2 0.4 0.1
2 Ben 0.6 0.4
5 Ben.1 0.9 0.4
8 Ben.2 0.6 0.4
3 Mary 0.7 0.2
6 Mary.1 0.2 0.2
9 Mary.2 0.7 0.2

chgroup groups together duplicated values but retains the group order (according the first appearance order of each group), efficiently

关于r - 用数字将相似的字符串分组并保持首次出现的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73612563/

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