r - 根据条件修改数据框中的字符串名称

标签 r replace dplyr

我有一个数据框,其中包含一个名为“Control_Category”的变量。该变量有六个名称,为简单起见,我将其设为通用名称:

df <- data.frame(Control_Category = c("Really Long Name One",
"Super Really Long Name Two",
"Another Really Flippin' Long Name Three",
",Seriously, It's a Fourth Long Name",
"Definitely a Fifth Long Name",
"Finally, This guy is done, number six"))

我用它来开个小玩笑。因此,虽然名称很长,但它们很整洁,因为每个 (1-6) 的值是一致的。在 data.frame 的这个特定字符向量中,有成百上千个条目与这六个中的任何一个匹配。

我需要做的是将长名称替换为短名称。因此,如果发现上述任何名称,请将其替换为较短的版本,例如:

一个 二 三 四 五 六个

我尝试了一个使用“case_when”的函数,但失败得很惨。任何帮助将不胜感激。

基于社区问题的附加信息

项目的顺序无关紧要。没有 1 - 6 的名称。正好有 6 个,我做了 6 个愚蠢的长字符串。字符串本身很长。

因此,任何存在“超长名称二”的地方,该值都需要更新为类似“二”或近似“二”的“短名称”。实际上,该类别称为“审计、测试”和考试结果”。短名称最好只是“AUDIT”。

最佳答案

您可以对每个替换只使用一次 gsub():

df$Control_Category <- gsub('Really Long Name One', 'One',  df$Control_Category)

您可以重复类似的逻辑来处理其他五个长/短名称对。

关于r - 根据条件修改数据框中的字符串名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45931691/

相关文章:

r - 在 R 中结合作弊图

r - 如何在 R 中计算一个月的第三个星期五

检索 fread 使用的列分隔符

正则表达式替换除#和@之外的所有符号

r - 如何使用 R 按模式识别列并将其转换为日期时间?

R:将二进制分类变量转换为长数据格式

javascript - GreaseMonkey脚本重写图片链接

python - Pandas Dataframe 部分字符串替换

r - Dplyr 警告 : `...` is not empty

r - R中的慢dplyr查询