我有一个包含两列的数据框:x
和y
。每列可以存储“A”,“B”或NA。
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)
答案 0 :(得分:1)
我们需要使用!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
答案 1 :(得分:0)
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
答案 2 :(得分:0)
这是另一种可能性:
df$is_a <- !!rowSums(ifelse(is.na(df), 0, df=="A"))
#> df$is_a
#[1] TRUE FALSE FALSE TRUE TRUE
答案 3 :(得分:-1)
使用dplyr库,函数mutate ..
<div><canvas id="header"></canvas>
<ul id="list" style="height:450px; overflow:scroll">
<li> ... </li>
...
如果x或y为A则为真,如果两者均为NA或B则为假。