r - 如何根据字符串值R分配相同的id号

标签 r vector substring match

我有一个字符串向量。每个都以 f1_ 或 f2_ 开头。

> lst_c<-c("f1_cat", "f2_cat", "f1_dog", "f1_camel", "f2_camel")
> lst_c
[1] "f1_cat"   "f2_cat"   "f1_dog"   "f1_camel" "f2_camel"

我想要的是比较除前 3 个字符(f1_/f2_)之外的所有内容,并在匹配时为它们分配相同的值

预期输出

> df
      name id_f
1   f1_cat    1
2   f2_cat    1
3   f1_dog    2
4 f1_camel    3
5 f2_camel    3

最佳答案

这里有一个方法

x <- substring(lst_c, 4, nchar(lst_c))
match(x, unique(x))
# [1] 1 1 2 3 3

nchar(lst_c)

返回lst_c中每个元素的字符数。 substring(...)lst_c 中的这些元素中删除前 3 个字符并返回

x <- substring(lst_c, 4, nchar(lst_c))
x
# [1] "cat"   "cat"   "dog"   "camel" "camel"

最后,我们使用 match 来获取“第一个参数在第二个参数中的(第一个)匹配位置。”

关于r - 如何根据字符串值R分配相同的id号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60401969/

相关文章:

r - 在 latex 表中显示\复选标记

r - 将表达式传递到 `MoreArgs` 的 `mapply`

java - 分割字符串时避免数组索引越界异常

mysql - 如何删除 MySQL 中字符串的第一部分直到并包括第一个逗号?

windows - 从 R 写入 UTF-8 文件

r - Rmarkdown 中的 Tufte 式投影仪演示?

c++ - 围绕任意轴旋转平面二维对象

r - 对相同的列表元素进行分组并计算其在 R 中的出现次数

c++ - 函数从收缩 vector 返回字符。 vector 为空时返回什么?

java - java中的子字符串IP地址