如何更新这些与数据框另一列中的条件匹配的行?
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
我正在尝试将 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