R语言 如何有条件地将一个列值替换为另一个列值?

92dk7w1h  于 2023-05-26  发布在  其他
关注(0)|答案(2)|浏览(328)

如果events = strikeout,我将尝试用列描述中的值替换列events中的值。我正在处理一个大型数据集,所以这只是我观察到的一个片段。

data <- data.frame("events" = c("strikeout", 
"swinging_strike", "ball", "called_strike", 
"hit_into_play", "strikeout"),
                  "description" = 
c("swinging_strike", "swinging_strike", 
"ball", "called_strike", "double_play", 
"called_strike"))

我很感激任何帮助。谢谢你!

uqzxnwby

uqzxnwby1#

你可以使用tidyverse的dplyr来实现这一点。您所需要的只是mutate函数,以便使用来自dplyr的if_else操作events列。在下面的代码中,我说,如果events是“strikeout”,请替换为“description”中的相应值:

library(dplyr)

data <- data.frame(
  "events" = c(
    "strikeout",
    "swinging_strike", "ball", "called_strike",
    "hit_into_play", "strikeout"
  ),
  "description" =
    c(
      "swinging_strike", "swinging_strike",
      "ball", "called_strike", "double_play",
      "called_strike"
    )
)

data <- data %>% 
  mutate(events = if_else(events == "strikeout", description, events))

如果你不想承担任何依赖关系,你可以使用base R,如下所示:

data$events[which(data$events == "strikeout")] <- data$description[which(data$events == "strikeout")]
nzrxty8p

nzrxty8p2#

library(dplyr)

data %>% 
      mutate(events = case_when(
        events == 'strikeout' ~ description,
        TRUE ~ events
      ))

如果有多个条件,也可以使用case_when()。

相关问题