r - 最后一位数字上的单独列
问题描述
假设我有一个像这样的df:
x <- data.frame("SN" = 1:3, "Age" = c(21,15,2), "Name" = c("Q62yes","Q44_1_1Maybe", "Q2Some times"))
我想将 Name 列分开,这样:
x_out <- data.frame("SN" = 1:3, "Age" = c(21,15,2), "Name" = c("Q62","Q44_1_1","Q2"), "New" = c("yes", 'Maybe', 'some times'))
我试过这个,但我不认为我的正则表达式没有按预期将它分成两组。有什么建议么?
x %>%
tidyr::separate(Name,c("name",'new'), sep = "(Q[[:digit:]]*_[[:digit:]])*([[:alpha:]]*\\s*)")
解决方案
您可以使用
x %>%
tidyr::extract(Name,c("name",'new'), "(.*?\\d)([[:alpha:]].*)")
正则表达式意味着:
(.*?\d)
- 第 1 组:尽可能少的任何零个或多个字符,直到后续子模式后面的数字([[:alpha:]].*)
- 第 2 组:一个字母,然后是字符串的其余部分。
请参阅正则表达式演示。
带输出的 R 测试:
> x %>%
+ tidyr::extract(Name,c("name",'new'), "(.*?\\d)([[:alpha:]].*)")
SN Age name new
1 1 21 Q62 yes
2 2 15 Q44_1_1 Maybe
3 3 2 Q2 Some times
推荐阅读
- laravel - 验证优惠券代码时出现条纹错误“找不到类‘Stripe\Exception\InvalidRequestException’”
- flutter - 如何在 Flutter Web 应用程序中包含 WebAssembly 模块?
- r - 添加未使用的因子水平
- python - 如何在终端上显示标志(例如 [-h])?
- android - Android停用“双击激活”但仍描述recicleview元素回话
- python - 如何迭代 StyleFrame 中的行?
- ansible - Ansible 包含基于操作系统版本的角色
- angular - 打字稿:重构/服务方法的公共或私有?
- python - 使pynput.Listener上的特定Key方法约束与python中的字典一起工作
- java - 如何获取字符串中的数字,然后计算它们的平均值?