gpt4 book ai didi

r - 在R中删除String中的重复元素

转载 作者:行者123 更新时间:2023-12-04 12:08:57 24 4
gpt4 key购买 nike

我在删除字符串中的重复元素时遇到了一些问题。我的数据看起来类似于:


idvisit     path
1 1,16,23,59
2 2,14,14,19
3 5,19,23,19
4 10,10
5 23,23,27,29,23

我有一个包含唯一 ID 的列和一个包含网页导航路径的列。右栏包含一些情况,其中页面刚刚重新加载并且页面被跟踪两次甚至更多次。页面以逗号分隔并保存为因子。我的问题是,我不想连续显示多个页面,所以数据应该是这样的。


idvisit     path
1 1,16,23,59
2 2,14,19
3 5,19,23,19
4 10
5 23,27,29,23

应该删除彼此相邻的多个页面。我知道如何使用正则表达式删除特定的多个数字,但我有大约 20.000 个不同的页面,无法对所有页面执行此操作。对于我的问题,有人有解决方案或提示吗?

谢谢塞巴斯蒂安

最佳答案

我们可以使用tidyverse。使用separate_rows将'path'变量用分隔符(,)分割成长格式,然后按'idvisit'分组,我们粘贴 游程编码

library(tidyverse)
separate_rows(df1, path) %>%
group_by(idvisit) %>%
summarise(path = paste(rle(path)$values, collapse=","))
# A tibble: 5 × 2
# idvisit path
# <int> <chr>
#1 1 1,16,23,59
#2 2 2,14,19
#3 3 5,19,23,19
#4 4 10
#5 5 23,27,29,23

或者 base R 选项是

df1$path <- sapply(strsplit(df1$path, ","), function(x) paste(rle(x)$values, collapse=","))

注意:如果“路径”列是 factor 类,在作为参数传递给 strsplit 之前转换为 characterstrsplit (as.character(df1$path), ",")

关于r - 在R中删除String中的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229051/

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