gpt4 book ai didi

r - tidyr 仅分离最后 n 个实例

转载 作者:行者123 更新时间:2023-12-03 23:16:09 26 4
gpt4 key购买 nike

我在 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' 包含相同的分隔符
用于分隔要分离的因素(治疗和冠层位置)。但是合并只发生在最后一个实例上。

因此,在上面示例的最后一行中,我希望提取:'resp_sd'、'NPadd'、'belowCanopy'。

如何合并第一个实例而不是最后一个实例以仅分离最后 n 个实例?

最佳答案

在筛选已经回答过的类似问题时,我发现tidyr::extractthis answer ,可用于完成以下工作:

 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

关于r - tidyr 仅分离最后 n 个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50391333/

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