我有一个字符串向量。每个都以 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/