在一列中提取具有唯一值的行并且等于文本" NA"在使用R的另一列中

时间:2014-04-23 01:09:54

标签: r row unique na

给定一个包含3列的数据框,A,B,C:

A    B       C
P   NA   black
W    4   white
F    6   black
R   NA    pink
H    8    blue
V   NA  yellow

使用R,我想弄清楚如何在C列中提取具有唯一值的行 AND text" NA"在B栏中。

因此,在这种情况下,提取的行应该是第4行和第6行。

2 个答案:

答案 0 :(得分:2)

subset(dat, !duplicated(C) & !duplicated(C, fromLast=T) & is.na(B))
#   A  B      C
# 4 R NA   pink
# 6 V NA yellow

答案 1 :(得分:1)

如果您的列B存储字符串"NA",请执行此操作

dat[ave(rep(1,nrow(dat)), dat$C, FUN=sum)==1 & dat$B=="NA",]

如果它存储实际的NA值(缺失值),请执行此操作

dat[ave(rep(1,nrow(dat)), dat$C, FUN=sum)==1 & is.na(dat$B),]

其中dat是您的数据框。结果:

  A  B      C
4 R NA   pink
6 V NA yellow