无法从Dataframe中删除特定行

时间:2018-03-04 06:48:29

标签: r

所以我有一个从csv导入的数据帧。我已经通过其中一个列对其进行了子集化。我在表格中找到了一些重复的条目,并试图消除它们并使用df [-c(##,##),]将它们重新分配给数据框(非常类似于this问题的答案。这里'我的代码是什么样的。

我导入文件并将其子集化:

df1 <- read.csv("file.csv",
                header = T, 
                sep = ",",
                stringsAsFactors = FALSE,
                fileEncoding = "UTF-8-BOM")

> df1
     semester course.name lect.num professor.gender
1 2015 Spring   Bio1A        101                 M
2 2014 Spring   Bio1B        103                 M
3 2015 Spring   Bio1A        102                 F
4 2015 Spring   Bio1A        102                 M
5 2014 Spring   Bio1B        101                 M
6 2014 Spring   Bio1B        102                 F 
7 2014 Spring   Bio1A        101                 F

df2 <- df1[ df1$course.name == "Bio1A", ]

> df2[duplicated(df2[, c(1,3)], incomparables = FALSE) | duplicated(df2[, 
c(1,3)], incomparables = FALSE, fromLast = T) ,c(1:4)]
     semester course.name lect.num professor.gender
3 2015 Spring   Bio1A        102                 F
4 2015 Spring   Bio1A        102                 M

> dim(df2)
[1] 3 4

所以现在我想删除索引为1的行,所以我执行以下操作

df2 <- df2[ -c(3), ]

这在理论上应该可行,但是当检查重复时它仍然在那里,尽管改变了尺寸。

> df2[duplicated(df2[, c(1,3)], incomparables = FALSE) | duplicated(df2[, 
c(1,3)], incomparables = FALSE, fromLast = T) ,c(1:4)]
     semester course.name lect.num professor.gender
3 2015 Spring   Bio1A        102                 F
4 2015 Spring   Bio1A        102                 M

> dim(df2)
[1] 2 4

我无法通过调用来查看数据框,因为它实际上超过500行,但是当我使用View(df2)查看data.frame时,我仍然可以看到我认为我喜欢的行在数据框中也是如此。有没有人对可能发生的事情有解释? Rstudio中可能有Bug吗?难道我做错了什么?任何意见,将不胜感激!

还值得一提的是

df2 <- df2[ -c(3), , drop = F]

不会影响上述结果。

编辑:所以我没有意识到R在子集时不会更新行的索引。所以我认为是第3行,实际上是第2行的子集。谢谢你的帮助!

0 个答案:

没有答案