如何将fct_relabel与strsplit一起使用或类似于relabel a factor column?
我正在尝试使用tidyverse代码自动更改因子列的标签,但在基于简单函数更改标签时遇到问题 一些示例数据如下所示:如何将fct_relabel与strsplit一起使用或类似于relabel a factor column?,r,dplyr,forcats,R,Dplyr,Forcats,我正在尝试使用tidyverse代码自动更改因子列的标签,但在基于简单函数更改标签时遇到问题 一些示例数据如下所示: subjectid Parameter value <chr> <fct> <dbl> 1 13 alpha_IST 0.0751 2 13 alpha_IEX 15.7 3 13 alpha_CB 0.236 4 15 alpha
subjectid Parameter value
<chr> <fct> <dbl>
1 13 alpha_IST 0.0751
2 13 alpha_IEX 15.7
3 13 alpha_CB 0.236
4 15 alpha_IST 0.0680
5 15 alpha_IEX 16.5
6 15 alpha_CB 0.282
7 17 alpha_IST 0.0793
我试图去掉冗余的参数标签的前半部分(即删除alpha)
鉴于上述对象称为medians,我可以使用:
par_标签%mutate(参数=因子(参数,标签=par_标签))
似乎我应该能够使用这个函数构建相同的功能,但是我似乎无法让它工作
我试过:
中位数%>%
mutate(参数=fct_relabel)(参数,函数(x){
strsplit(x,“”)[2]
}))
它给出了错误error:mutate()输入参数的问题。✖ 新的\u级别必须是字符向量
我还尝试:
中位数%>%
mutate(参数=fct_relabel)(参数,函数(x){
strsplit(x,“”)[1][2]
}))
其错误消息如下:error:mutate()输入参数有问题。✖ 新等级必须与等级(f)长度相同:预计3个新等级,得到1个。
我也尝试过其他组合,但同样没有成功,我可以看到,转换为字符向量,使用tidyr分离,然后转换回因子将起作用,但我觉得这应该是可能的,以类似于我尝试过的方式。这可能吗?您可以使用
fct\u relabel
作为:
library(dplyr)
library(forcats)
medians %>%
mutate(Parameter = fct_relabel(Parameter,
function(x) sapply(strsplit(x, "_"), `[`, 2)))
# subjectid Parameter value
# <chr> <fct> <dbl>
#1 13 IST 0.0751
#2 13 IEX 15.7
#3 13 CB 0.236
#4 15 IST 0.068
#5 15 IEX 16.5
#6 15 CB 0.282
levels(medians$Parameter) <- sub('.*_', '', levels(medians$Parameter))
medians %>%
mutate(Parameter = fct_relabel(Parameter, ~ sub('.*_', '', .x)))