我有一個數據框有兩列:x
和y
。每列可以存儲'A','B'或NA。R:檢查是否有值在列
df = data.frame(
x = c('A', NA, 'B', 'A', NA),
y = c('B', NA, 'B', 'A', 'A')
)
如何創建一個is_a
柱告訴如果x
或y
等於 'A'?
從前面的例子中,結果將是:
df$is_a = c(T, F, F, T, T)
我有一個數據框有兩列:x
和y
。每列可以存儲'A','B'或NA。R:檢查是否有值在列
df = data.frame(
x = c('A', NA, 'B', 'A', NA),
y = c('B', NA, 'B', 'A', 'A')
)
如何創建一個is_a
柱告訴如果x
或y
等於 'A'?
從前面的例子中,結果將是:
df$is_a = c(T, F, F, T, T)
我們需要使用!is.na(x)
和!is.na(y)
使NA值返回FALSE
with(df, x=="A" & !is.na(x)|y=="A" & !is.na(y))
#[1] TRUE FALSE FALSE TRUE TRUE
或者另一種選擇是
with(df, 1:nrow(df) %in% which(x=="A" | y =="A"))
#[1] TRUE FALSE FALSE TRUE TRUE
Add a variable to df dataframe and use ifelse statement
df$is_a <- ifelse((grepl("A",df$x)|grepl("A",df$y)),T,F)
[1] TRUE FALSE FALSE TRUE TRUE
另外還有一個可能性:
df$is_a <- !!rowSums(ifelse(is.na(df), 0, df=="A"))
#> df$is_a
#[1] TRUE FALSE FALSE TRUE TRUE
不會因爲它會讓NA成爲'A',你可以使用'ifelse'賦值。看看那個。 – Gopala
如何管理NA? – psql