选择列中具有重复值但在R中的重复行的一列中的空白值的特定行

时间:2017-10-27 18:12:43

标签: r

我是堆叠溢出的新手。如果标题不易理解,我很抱歉。我下次会尝试做得更好。

我的第一列中有一个重复值的数据框但是各行中的最后一行有所不同(很少是空白而其他列可能有一些值)。我一直试图在最后一列中删除带有空白字段的副本,但每次使用'duplicated()'或'unique()'函数时,我只留下带有空白字段的行。这可能发生,因为行的排序方式使得空白字段位于最后一列中具有值的行上方。

例如, 输入:

 *No.   per         hmm        qty*
  1    BARBIE123     new         1
  2    AYLIK32     * N/A*        1
  3    AYLIK32       new         1
  4     BARB         mid         1

输出我一直在:

*No.   per      hmm        qty*
1    BARBIE    new         1
2    AYLIK   * N/A*        1
4     BARB     mid         1

期望的输出:

*No.   per      hmm        qty*
1     BARBIE    new         1
3     AYLIK     new         1
4     BARB      mid         1

有没有办法可以指定要保留哪一行以及要删除哪一行?

感谢所有帮助。如果问题无法理解,请告诉我。提前致谢。

2 个答案:

答案 0 :(得分:1)

嗯,不确定这是不是你想要的。这将删除所有带NA的行。

df <- df[complete.cases(df), ]

假设你在其他专栏中有NAs而你不想要考虑那些。要仅查看单个列中的NA,请使用:

df <- df[complete.cases(df[,3]), ]

其中3是您要在中查找NA的列的#。

答案 1 :(得分:0)

也许这对你有用

df <- read.table(text="No.   per         hmm        qty*
1    BARBIE123     new         1
2    AYLIK32       N/A        1
3    AYLIK32       new         1
4     BARB         mid         1", header=TRUE, stringsAsFactors=FALSE)

library(dplyr)
df %>%
  filter(!duplicated(per, fromLast=TRUE))

  # No.       per hmm qty.
# 1   1 BARBIE123 new    1
# 2   3   AYLIK32 new    1
# 3   4      BARB mid    1