[英]Checking a condition on two columns and if true manipulate a 3rd column in R
我一直在尋找解決此問題的方法,但找不到。 這有點類似於其他問題,因此,如果這是重復的,我表示歉意。
我希望檢查數據框上的兩個條件,並且當兩個條件都滿足時,請更改第三列。 通過一個示例可能更容易看到:
greetings <- c("Hello", "Howdy", "Hola")
df <- data.frame(
Criteria_1 = c("Hello", "Hello", "Goodbye", "Goodbye", "Hello"),
Criteria_2 = c("Yes", "No", "Yes", "No", "Yes"),
Change_col = c(1,5,6,9,3))
Criteria_1 Criteria_2 Change_col
1 Hello Yes 1
2 Hello No 5
3 Goodbye Yes 6
4 Goodbye No 9
5 Hello Yes 3
我想檢查Criteria_1是否在變量“ greeting”中有一個值,以及Criteria_2是否為“是”。 當兩者都為真時,我想將“ Change_col”中的值更改為10。
這是我嘗試過的方法,但是它將所有Change_col值更改為10。
if(df$Criteria_1 %in% greetings & df$Criteria_2 == 'Yes'){
df$Change_col <- '10'
我想我可能必須使用apply函數? 但不是很確定該怎么做。 所需的輸出將是這樣的:
Criteria_1 Criteria_2 Change_col
1 Hello Yes 10
2 Hello No 5
3 Goodbye Yes 6
4 Goodbye No 9
5 Hello Yes 10
我們可以使用邏輯表達式將“ Change_col”中的值更改為10
df$Change_col[with(df, Criteria_1 %in% greetings & Criteria_2 == "Yes")] <- 10
df
# Criteria_1 Criteria_2 Change_col
#1 Hello Yes 10
#2 Hello No 5
#3 Goodbye Yes 6
#4 Goodbye No 9
#5 Hello Yes 10
我認為dplyr::mutate
和ifelse()
語句提供了一個不錯的解決方案。 您是否嘗試過以下方法?
library(tidyverse)
newDf <- df %>%
mutate(Change_col = ifelse(Criteria_1 %in% greetings & Criteria_2 == "Yes", 10, Change_col))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.