重命名 IF 或 IFELSE 语句中的字符串值

问题描述 投票:0回答:1

我需要替换数据集中的字符串值,但我将其更改为的字符串取决于另一个变量的值。我以为我熟悉 if() 和 ifelse() 但这是我第一次使用字符向量

if() 不起作用,因为向量中有多个值符合我的标准。

ifelse() 不起作用,因为我认为它返回一个全新的向量,所以当我要求它返回一个数据帧时,它会变得很挑剔。

这是我开始使用的数据:

过滤变量 字符串
A 无需更改
A 起始值
B 无需更改
B 起始值

我已经使用以下代码成功更改了我的字符串变量:

dat$String[dat$String == "Starting Value"] = "End Value A"

但这会改变每个“起始值”,无论我的过滤器值在做什么

这就是我陷入困境的地方:

dat = dat %>%
  ifelse(dat$Filter_variable == "A", 
         dat$String[dat$String == "Starting Value" <- "End Value A", 
         dat$String[dat$String == "Starting Value"] <- "End Value B")

ifelse(., dat$Filter_variable == "A", dat$String[dat$String == ) 中的错误: 未使用的参数 (dat$String[dat$String == "A"] <- "End Value A")

r if-statement replace data-manipulation
1个回答
0
投票

也许我在这里误解了你,因为你没有分享预期的输出。但是,根据我的理解,您想要将

"Starting Value"
值更改为相应
"End Value"
Filter_variable

您可以通过以下方式使用

ifelse

df <- transform(df, String = ifelse(String == "Starting Value", 
                       paste("End Value", Filter_variable), String))
df

#  Filter_variable           String
#1               A No change needed
#2               A      End Value A
#3               B No change needed
#4               B      End Value B

数据

df <- structure(list(Filter_variable = c("A", "A", "B", "B"), String = c("No change needed", 
"Starting Value", "No change needed", "Starting Value")), class = "data.frame", row.names = c(NA, -4L))
© www.soinside.com 2019 - 2024. All rights reserved.