r - tidyr 仅分离最后 n 个实例
问题描述
我在 R 中有一个 data.frame,为简单起见,它有一列我想分开。以下示例使用 tidyr::separate 截断,几乎可以完成这项工作:
tmp2 <- data.frame( varTreatName = c(
"resp_Nadd_belowCanopy", "resp_NPadd_belowCanopy"
, "resp_sd_Nadd_belowCanopy", "resp_sd_NPadd_belowCanopy"))
tmp2 %>% separate(
"varTreatName", c("varName","treatment","canopyPosition")
, extra = "merge")
产生:
varName treatment canopyPosition
1 resp Nadd belowCanopy
2 resp NPadd belowCanopy
3 resp sd Nadd_belowCanopy
4 resp sd NPadd_belowCanopy
几个实例合并到一列。但是请注意,在所描述的情况下,第一个实例 varName 'resp_sd' 包含相同的分隔符,该分隔符用于分隔要分隔的因素(处理和 canopyPosition)。但是合并只发生在最后一个实例上。
因此,在上面示例的最后一行中,我希望提取:'resp_sd'、'NPadd'、'belowCanopy'。
如何合并第一个实例而不是最后一个实例以便仅分离最后 n 个实例?
解决方案
在筛选已经回答的类似问题时,我tidyr::extract
在这个答案中发现,可以用来完成这项工作:
tmp2 %>% extract(
"varTreatName", c("varName","treatment","canopyPosition")
, regex = "(.*)_([^_]+)_([^_]+)$")
产生预期的结果:
varName treatment canopyPosition
1 resp Nadd belowCanopy
2 resp NPadd belowCanopy
3 resp_sd Nadd belowCanopy
4 resp_sd NPadd belowCanopy
推荐阅读
- bitbucket - BitBucket 相当于 .git/hooks/pre-commit
- java - 如何在不说不兼容类型的情况下在后台运行线程?
- r - ggplot2 R中geom_label函数的对齐问题
- snowflake-cloud-data-platform - snowsql中的整数函数
- python - 释放 ImageButton 时调用 .py 脚本时出现 SyntaxError
- java - 图标图像未显示 -Java GUI
- github - 撤消 Git 分支提交和合并
- node.js - 出现错误:client.users.cache.get
- node.js - 将数组转换为打字稿选项
- reactjs - 默认情况下如何配置“在您的网络上”的 CRA?