R:检查其中一列中的值

时间:2016-05-17 13:29:41

标签: r

我有一个包含两列的数据框:xy。每列可以存储“A”,“B”或NA。

 df = data.frame(
   x = c('A', NA, 'B', 'A', NA),
   y = c('B', NA, 'B', 'A', 'A')
 )

如何创建is_a列,告知xy是否等于'A'?

从上一个示例中,结果将是:

df$is_a = c(T, F, F, T, T)

4 个答案:

答案 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则为假。