首页 > 解决方案 > 查找字符串的一部分并更新另一列

问题描述

我有以下数据框,我想根据 A 列中的字符串部分更改 B 列。因此,如果找到 C/OA,则 B 列将为 1,否则没有变化。

df1 <- data.frame(A = c("aC/O A","b","C/O Addddd","d","C/O A","C/O A1111"), 
                    B = c(0,2,3,4,5,""))



     A          B
   1 aC/O A     0
   2 b          2
   3 C/O Addddd 3
   4 d          4
   5 C/O A      5
   6 C/O A1111  

请注意,6 的值为空白。

期望的结果如下。

   A           B
1 aC/O A       1
2 b            2
3 C/O Addddd   1
4 d            4
5 C/O A        1
6 C/O A1111    1

标签: r

解决方案


用于grepl查找字符串的出现并将相应的B值更新为 1。

df1$B[grepl("C/O A", df1$A)] <- 1

数据

将数据读取为字符而不是因子

df1 <- data.frame(A = c("aC/O A","b","C/O Addddd","d","C/O A","C/O A1111"), 
                  B = c(0,2,3,4,5,""), stringsAsFactors = FALSE)

推荐阅读