【发布时间】:2016-06-02 07:39:28
【问题描述】:
假设 R 中有一个数据框,其中我有(除其他外)以下列:
V1
Q1r2c5
Q1r5c11
Q1r5_1c130
我有第二个数据框,如下所示:
search replace
5 brand1
11 brand2
130 brand3
我想要做的是:在第一个数据帧中搜索 V1 中“c”后面的部分,并将其替换为第二个数据帧中的匹配替换。因此:
- Q1r2c5 变为“brand1”
- Q1r5c11 变为“brand2”
- Q1r5_1c130 变为“brand3”
我已经尝试过gsub(".*c", "", dataframe$V1"),它确实给了我“c”后面的部分。但是,我还没有找到一种简单的方法(通过 for 循环除外)来根据第二个数据帧进行匹配。
有什么想法吗? 非常感谢!
【问题讨论】:
-
尝试函数
match(根据您通过sub调用检索的部分进行匹配) -
只是一个建议,但如果您的第一列仅包含“Q1r2c5”、“Q1r5c11”和“Q1r5_1c130”,请确保此列是一个因素,然后您可以相应地替换级别。比如:
levels(df$V1) <- c("brand1", "brand2", "brand3") -
@PlasmaBinturong:不幸的是,“c”之前的部分包含 28 个不同的字符串,“c”后面的部分包含 15 个。所以我最终会得到 420 个因子级别。