r - 识别部分字符串匹配
问题描述
我在 df 中有一个列,其值如下:
等等..
我想用粗体标识所有值,即列中在下划线之后有任何字符并且同时出现时没有下划线的所有值。我尝试使用 gsub 在单独的数据框中获取值列表,但这仍然不能解决问题。任何帮助将不胜感激!
解决方案
基础 R 解决方案:
首先删除下划线后的所有内容,以便我们可以比较相似的字符串。
x <- c('92030534-12835', '92030534-12835_2', '92030534-12835_3', '13212854-14382', '13668582-14232', '93265773-15302', '93265773-15302_2')
df <- data.frame(x)
df$y <- sub('_.*', '', df$x)
df
# x y
#1 92030534-12835 92030534-12835
#2 92030534-12835_2 92030534-12835
#3 92030534-12835_3 92030534-12835
#4 13212854-14382 13212854-14382
#5 13668582-14232 13668582-14232
#6 93265773-15302 93265773-15302
#7 93265773-15302_2 93265773-15302
使用duplicated
将识别所有重复的字符串。
duplicated(df$y) | duplicated(df$y, fromLast = TRUE)
[1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE
然后,您可以对这些行进行子集化。
df[duplicated(df$y) | duplicated(df$y, fromLast = TRUE), ]
# x y
#1 92030534-12835 92030534-12835
#2 92030534-12835_2 92030534-12835
#3 92030534-12835_3 92030534-12835
#6 93265773-15302 93265773-15302
#7 93265773-15302_2 93265773-15302
或将它们添加为新列
df$z <- duplicated(df$y) | duplicated(df$y, fromLast = TRUE)
推荐阅读
- python - 查询mongodb是否有数据
- reactjs - 反应 useEffect 钩子并返回数据
- html - 将 WebP 回退与 CSP 结合使用
- mongodb - 无法安装也无法取消mongodb安装
- laravel - Laravel 在多个字段上自定义验证规则并处理业务逻辑
- react-native - 反应导航 navigation.dispatch(DrawerActions.toggleDrawer()) 无法正常工作
- javascript - 用于合并/组合两个 URLSearchParams 的 Javascript 函数
- spring-boot - Spring Web客户端读取超时
- typescript - 测试异步函数不起作用
- java - 做while循环不结束