我有一個資料子集如下。我想創建一個新列來說明 x1、x2 和 x3 列中的所有值是否為 1,則為“是”,如果為 2,則為“否”。
structure(list(x1 = c("1", "1", "1", "2", NA, "2", "2", NA,NA, "1", "1", "1"),
x2 = c(NA, NA, "1", NA, "2", NA, "2", "2", "1", "1", "1", "1"),
x3 = c(NA, NA, "1", NA, "2", NA,"1", "1", "2", "1", "2", "1")),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -12L))
我在下面嘗試過,但它不正確。我感謝您的幫助。
d$new <- ifelse(!is.na(d$x1 ==1 & d$x2 ==1 d$x3 ==1 ), "yes","no")
uj5u.com熱心網友回復:
您可以嘗試使用 tidyverse 中的 case_when 運算式來執行此操作。您需要首先激活 tidyverse 庫:
library(tidyverse)
之后,代碼將如下所示:
df <- structure(list(x1 = c("1", "1", "1", "2", "NA", "2", "2", "NA","NA", "1", "1", "1"),
x2 = c(NA, NA, "1", "NA", "2", "NA", "2", "2", "1", "1", "1", "1"),
x3 = c(NA, NA, "1", NA, "2", "NA","1", "1", "2", "1", "2", "1")),
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -12L))
df <- x |> mutate(new_col = case_when(
x1 == 1 & x2 == 1 & x3 == 1 ~ "Yes",
TRUE ~ "No"))
mutate 運算式創建一個新列,而 case when 用于執行 if else 條件。有關更多說明,您可以訪問此鏈接https://stringr.tidyverse.org/
uj5u.com熱心網友回復:
嘗試這個
d$new <- ifelse(d$x1 ==1 & d$x2 ==1 & d$x3 ==1 , "yes",
ifelse(d$x1 ==2 & d$x2 ==2 & d$x3 ==2 , "no", NA))
uj5u.com熱心網友回復:
d$new <- ifelse(apply(d==1, 1, prod), 'yes', 'no')
d==1創建一個邏輯矩陣,其中TRUE,FALSE和NA其中 1, not 1 和NAwere in d, 分別。然后,應用于prod該矩陣的行,如果是 all ,則得到 1 ,如果TRUE至少有一個FALSE(并且沒有NA)并且NA至少有一個 ,則得到0 NA。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488612.html
上一篇:使用IF獲取電子郵件或行
