R使用忽略NA';当使用unique时

R使用忽略NA';当使用unique时,r,unique,na,R,Unique,Na,我试图根据行在列值中的相似性查找/丢弃行,并具有以下示例代码: vec1 <- c("B","D","E","NA") vec2 <- c("B","D","E","NA") vec3 <- c("B","C","E","NA") vec4 <- c("B","D","E","NA") vec5 <- c("B","NA","E","E") vec6 <- c("B","NA","NA","NA") mat1 <

我试图根据行在列值中的相似性查找/丢弃行,并具有以下示例代码:

vec1 <- c("B","D","E","NA")    
vec2 <- c("B","D","E","NA")    
vec3 <- c("B","C","E","NA")    
vec4 <- c("B","D","E","NA")    
vec5 <- c("B","NA","E","E")    
vec6 <- c("B","NA","NA","NA")

mat1 <- cbind(vec1,vec2,vec3,vec4,vec5,vec6)
mat1
     vec1 vec2 vec3 vec4 vec5 vec6
[1,] "B"  "B"  "B"  "B"  "B"  "B" 
[2,] "D"  "D"  "C"  "D"  "NA" "NA"
[3,] "E"  "E"  "E"  "E"  "E"  "NA"
[4,] "NA" "NA" "NA" "NA" "E"  "NA"

rows = apply(mat1, 1, function(i) length(unique(i)) > 1 )
mat2 <- mat1[rows, ]
     vec1 vec2 vec3 vec4 vec5 vec6
[1,] "D"  "D"  "C"  "D"  "NA" "NA"
[2,] "E"  "E"  "E"  "E"  "E"  "NA
[3,] "NA" "NA" "NA" "NA" "E"  "NA"

vec1您需要为
is.na正确输入它们才能正常工作。目前它们是字符串,
NA
has被归类为我们可以将
NA\u character\uu
指定为安全的。 此外,我还建议您编写一份
摘要
,这里有一些表格可以获取您需要的信息

长度(唯一(…)
本质上是一个

> mat1[is.na(mat1)]  
# character(0)  ## not good 
> mat1[mat1 == "NA"] <- NA_character_
> mat1[is.na(mat1)]  ## notice the difference...
# [1] NA NA NA NA NA NA NA NA

 > summary(mat1)
   vec1     vec2     vec3     vec4     vec5     vec6  
 B   :1   B   :1   B   :1   B   :1   B   :1   B   :1  
 D   :1   D   :1   C   :1   D   :1   E   :2   NA's:3  
 E   :1   E   :1   E   :1   E   :1   NA's:1           
 NA's:1   NA's:1   NA's:1   NA's:1       

> apply(mat1, 2, function(x) length(table(x)))
vec1 vec2 vec3 vec4 vec5 vec6 
   3    3    3    3    2    1 

> as.table(t(mat1))
     A B C D
vec1 B D E  
vec2 B D E  
vec3 B C E  
vec4 B D E  
vec5 B   E E
vec6 B                   
>mat1[is.na(mat1)]
#字符(0)##不好
>mat1[mat1==“NA”]mat1[is.NA(mat1)]35;#注意区别。。。
#[1]NA-NA-NA-NA-NA-NA
>摘要(mat1)
向量1向量2向量3向量4向量5向量6
B:1B:1B:1B:1B:1B:1B:1B:1B:1
D:1D:1C:1D:1E:2NA:3
E:1E:1E:1E:1NA:1
不适用:1不适用:1不适用:1不适用:1不适用:1
>应用(mat1,2,函数(x)长度(表(x)))
向量1向量2向量3向量4向量5向量6
3    3    3    3    2    1 
>as.表(t(mat1))
A、B、C、D
向量1 B D E
向量2 B D E
vec3 B C E
向量4 B D E
vec5 B E
vec6 B

您需要为
is.na正确输入它们才能正常工作。目前它们是字符串,
NA
has被归类为我们可以将
NA\u character\uu
指定为安全的。 此外,我还建议您编写一份
摘要
,这里有一些表格可以获取您需要的信息

长度(唯一(…)
本质上是一个

> mat1[is.na(mat1)]  
# character(0)  ## not good 
> mat1[mat1 == "NA"] <- NA_character_
> mat1[is.na(mat1)]  ## notice the difference...
# [1] NA NA NA NA NA NA NA NA

 > summary(mat1)
   vec1     vec2     vec3     vec4     vec5     vec6  
 B   :1   B   :1   B   :1   B   :1   B   :1   B   :1  
 D   :1   D   :1   C   :1   D   :1   E   :2   NA's:3  
 E   :1   E   :1   E   :1   E   :1   NA's:1           
 NA's:1   NA's:1   NA's:1   NA's:1       

> apply(mat1, 2, function(x) length(table(x)))
vec1 vec2 vec3 vec4 vec5 vec6 
   3    3    3    3    2    1 

> as.table(t(mat1))
     A B C D
vec1 B D E  
vec2 B D E  
vec3 B C E  
vec4 B D E  
vec5 B   E E
vec6 B                   
>mat1[is.na(mat1)]
#字符(0)##不好
>mat1[mat1==“NA”]mat1[is.NA(mat1)]35;#注意区别。。。
#[1]NA-NA-NA-NA-NA-NA
>摘要(mat1)
向量1向量2向量3向量4向量5向量6
B:1B:1B:1B:1B:1B:1B:1B:1B:1
D:1D:1C:1D:1E:2NA:3
E:1E:1E:1E:1NA:1
不适用:1不适用:1不适用:1不适用:1不适用:1
>应用(mat1,2,函数(x)长度(表(x)))
向量1向量2向量3向量4向量5向量6
3    3    3    3    2    1 
>as.表(t(mat1))
A、B、C、D
向量1 B D E
向量2 B D E
vec3 B C E
向量4 B D E
vec5 B E
vec6 B
来自上面的评论

rows=apply(mat1,1,函数(i)长度(唯一(i[!(i==“NA”)))>1)
来自上面的评论


rows=apply(mat1,1,函数(i)长度(unique(i[!(i==“NA”)))>1)

rows=apply(mat1,1,函数(i)长度(unique(i[!(i==“NA”))>1)
那么你有一个值为“NA”的字符,还是有一个合适的R NA值
vec1我有一个值为NA的字符。@Vlo您的评论非常有效,谢谢。您可以添加它作为答案吗?
rows=apply(mat1,1,函数(i)长度(唯一(i[!(i==“NA”))))>1)
那么您有一个值为“NA”的字符,还是有一个合适的R-NA值
vec1我有一个值为NA的字符。@Vlo您的评论非常有效,谢谢。你能补充一下吗?谢谢,这正是我需要的!是的,如果你想用不好的方式,当然。当其中一个ID为时会发生什么?谢谢,这正是我需要的!是的,如果你想用不好的方式,当然。当其中一个ID是用户时会发生什么?