I'd like to learn how to conditionally replace values in R data frame using if/then statements. Suppose I have a data frame like this one:
df <- data.frame(
customer_id = c(568468,568468,568468,485342,847295,847295),
customer = c('paramount','paramount','paramount','miramax','pixar','pixar'));
Run Code Online (Sandbox Code Playgroud)
I'd like to do something along the lines of, "if customer in ('paramount','pixar') make customer_id 99. Else do nothing". I'm using this code, but it's not working:
if(df$customer %in% c('paramount','pixar')){
df$customer_id == 99
}else{
df$customer_id == df$customer_id
}
Run Code Online (Sandbox Code Playgroud)
I get a warning message such as the condition has length > 1 and only the first element will be used. And the values aren't replaced.
I'd also like to know how to do this using logical operators to perform something like, "if customer_id >= 500000, replace customer with 'fox'. Else, do nothing.
Very easy to do in SQL, but can't seem to figure it out in R.
My sense is that I'm missing a bracket somewhere?
How do I conditionally replace values in R data frame using if/then statements?
你可以使用ifelse,像这样:
df$customer_id <- ifelse(df$customer %in% c('paramount', 'pixar'), 99, df$customer_id)
Run Code Online (Sandbox Code Playgroud)
语法很简单:
ifelse(condition, result if TRUE, result if FALSE)
Run Code Online (Sandbox Code Playgroud)
这是矢量化的,因此您可以在数据框列上使用它。