如何检查每一行中data.frame

时间:2017-06-15 04:02:02

标签: r validation match

我可以知道如何检查R中数据框中是否存在无效代码?

我想检查一下Code1到Code5的变量是否与我预先定义的代码帧/列表匹配。

我预定义的代码框/列表中的所有有效值:

1,3,4,5,6,7,8,9,11

以下是我的数据框

Key  Code1  Code2  Code3  Code4  Code5                 
 1    1      8      15     NA      11         
 2    5      3      NA     NA      NA
 3    4      5      11     NA      NA            
 4    11     2      NA     NA      NA

并希望得到如下结果

Key  Code1  Code2  Code3  Code4  Code5   Result                 
 1    1      8      15     NA      11    FALSE    <-due to invalid code "15"        
 2    5      3      NA     NA      NA    TRUE
 3    4      5      11     NA      NA    TRUE            
 4    11     2      NA     NA      NA    FALSE    <-due to invalid code "2"      

任何人都可以帮忙吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我们可以循环遍历行,然后使用%in%检查该行中的所有非NA元素是否都在向量中找到('v1')

df1$Result <- apply(df1[-1], 1, FUN = function(x) all(x[!is.na(x)] %in% v1))
df1$Result
#[1] FALSE  TRUE  TRUE FALSE

数据

v1 <- c(1,3,4,5,6,7,8,9,11)