【发布时间】:2018-07-26 14:44:17
【问题描述】:
我想从包含多个因子的现有列创建一个新列,但其中部分因子名称再次出现。让我举例说明:
factorA <- c("paul173643738","paul827484","george39585496","george7848658946","john2354674","john346","ringo384934","ringo24653")
df <- data.frame(factorA)
这是我的尝试:
library(dplyr)
df <- mutate(
df,factorB = case_when(
matches(factorA,"paul.") ~ "paul",
matches(factorA,"george.") ~ "george",
matches(factorA,"john.") ~ "john",
matches(factorA,"ringo.") ~ "ringo",
TRUE ~ "NA"))
这给了我Error in mutate_impl(.data, dots) : Evaluation error: is_string(match) is not TRUE. 我认为这是我没有正确指定R 应该如何查找我想要的字符串片段的结果。
结果应该是这样的:
factorA factorB
1 paul173643738 paul
2 paul827484 paul
3 george39585496 george
4 george7848658946 george
5 john2354674 john
6 john346 john
7 ringo384934 ringo
8 ringo24653 ringo
我确定以前有人问过这个问题,但我找不到任何适合我需要的答案。任何帮助将不胜感激。
【问题讨论】:
-
格式“{name}{numbers}”是否固定?如果是这样,您可以使用正则表达式来提取名称。
-
为什么要使用因子变量?我只在需要时使用它们。
-
matches是一个选择助手,您在错误的地方使用它,请参阅?select_helpers