如何更新这些与数据框另一列中的条件匹配的行?

How can I update these rows that match a condition in another column of my data frame?

我正在尝试将 Sam 在下面的小标题中的角色从 PM 更新为 TC。出于某种原因,我不知道如何让它工作,即使它看起来很简单。这是我的数据框。

df <- tibble(
          Name = c("Sam","Jane","Sam","Sam","James","Mary","Swain"),
          Role = c("PM","TC","PM","PM","RX","TC","TC"),
          Number = c(1:7)
          
        )
    

然后我有这个 if_else 语句,它应该在 Name = "Sam" 时有条件地将 Role 更新为 "TC"。但它所做的只是将所有行值更改为 TC,而不管名称如何。我不知道为什么或如何解决它。

df$Role <- if_else(df$Name == "Sam", df$Role <-  "TC", df$Role) 

您还可以使用 mutate 函数并引用不带美元符号的列名和数据框名称,就好像它们就像 R 中的任何对象一样:

library(dplyr)

df %>%
  mutate(Role = if_else(Name == 'Sam', 'TC', Role))

# A tibble: 7 × 3
  Name  Role  Number
  <chr> <chr>  <int>
1 Sam   TC         1
2 Jane  TC         2
3 Sam   TC         3
4 Sam   TC         4
5 James RX         5
6 Mary  TC         6
7 Swain TC         7