gpt4 book ai didi

r - 使用 mutate 和 starts_with

转载 作者:行者123 更新时间:2023-12-05 08:50:37 25 4
gpt4 key购买 nike

我想更改某些变量的值,具体取决于它们是否以某个字符串序列开头。

例子:

df <- data.frame(var1 = c("12345", "12345", "12345", "23456", "23456"))
df %>% mutate(var2 = ifelse(starts_with("123"), "ok", "not ok"))

所有以“123”开头的值都应更改为“ok”。如何将 starts_with()mutate() 结合使用?

谢谢!

最佳答案

starts_with 用于选择以特定名称开头的列。在这里,您可以改用 base R startsWith

library(dplyr)
df %>% mutate(var2 = ifelse(startsWith(var1, "123"), "ok", "not ok"))

# var1 var2
#1 12345 ok
#2 12345 ok
#3 12345 ok
#4 23456 not ok
#5 23456 not ok

但是,我们也可以在基本 R 中不使用 ifelse 来执行此操作。

df$var2 <- c('not ok', 'ok')[startsWith(df$var1, '123') + 1]

或者用grepl

df$var2 <- c('not ok', 'ok')[grepl('^123', df$var1) + 1]

数据

startsWith 需要数据为字符,使用stringsAsFactors = FALSE

df <- data.frame(var1 = c("12345", "12345", "12345", "23456", "23456"), 
stringsAsFactors = FALSE)

关于r - 使用 mutate 和 starts_with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61425318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com