问题描述
我想使用我预先创建的项目,使用fct_recode重命名因子级别。 我首先创建一些标签并将其保存到列表中:
#Creating the Labels:
LabelsWithN <- c(
sprintf("Man(%s)",FreqGender["Man","Freq"]),sprintf("Woman(%s)",FreqGender["Woman",sprintf("Non-Binary(%s)",FreqGender["Non-Binary",sprintf("Other(%s)",FreqGender["Other",sprintf("Prefer Not To disclose(%s)",FreqGender["Prefer not to disclose","Freq"])
)
这将创建一个带有“ Man(105)”,“ Woman(51)”等项目的Chr列表。 现在,我想在原始数据集中重新标记因子(即“ Man”->“ Man(105)”)以标记图形。我想使用列表项(即LabelsWithN [1])或直接使用创建字符串的函数(即sprintf(“ Man(%s)”,FreqGender [“ Man”,“ Freq”])。>
然后我尝试在fct_recode中输入列表项或函数:
#Using the Labels:
DataSet %>%
mutate(`Gender. What_is_your_ge.._` = fct_recode(`Gender. What_is_your_ge.._`,LabelsWithN[1] = "Man","Freq"]) = "Woman")) %>%
#THis is just the code for the graph:
ggplot(aes(x = `Gender. What_is_your_ge.._`,y = `Age. How_old_are_you?`,main = "Age distribution By Gender")) +
geom_Boxplot() +
xlab("Gender (n)") +
ylab("Age")
但是,这会产生:
"Unexpected '=' in:
"DataSet %>%
mutate(`Gender. What_is_your_ge.._` = fct_recode(`Gender. What_is_your_ge.._`,LabelsWithN[1] ="
使用功能或列表项都没关系。
向量是一个因素,列表中填充了字符。如果我操纵代码将因子“ man”重命名为“ cat”(“ cat” =“ Man”),则代码可以正常工作。
如何解决列表项/将函数输入fct_recode以使其起作用? 另外,有人可以向我解释这里的问题是什么?如果我打印出LabelsWithN [1],则会得到正确的字符串。
谢谢你和白,
Jan
解决方法
也许这会有所帮助?
x <- factor(c("apple","bear","banana","dear")) # what you want to recode
levels <- c(fruit = "apple",fruit = "banana") # how you want to recode it
x <- fct_recode(x,!!!levels) # recoding it