如何解决删除行功能的问题

How can I troubleshoot the delete row function

我正在尝试像这样删除一行:

data <- data[-1645,]

但是,在 运行 代码之后,该行仍然存在。我可以判断是因为该行中有一个异常值显示在我所有的图表上,当我查看数据时我可以对列进行排序以轻松找到有问题的异常值。我在过去删除行时没有遇到任何问题 - 有人 运行 有类似的东西吗?我确实理解异常值移除的局限性,但我通常不会移除它们,但是出于多种原因,我想看看没有这个数据的数据是什么样的(在这种情况下,响应变量中的所有其他值都在 - 1 和 0,这一行的值为 10^4)。

您确实需要提供更多信息,但有多种方法可以解决问题。第一个是打印出您要删除的行:

数据[1645, ]

那是异常值吗?你没有告诉我们你是如何识别异常值的。如果行已从数据框中删除,则行名称不会更改,但索引值会更改,例如

set.seed(42)
x <- sample.int(25)
y <- sample.int(25)
data <- data.frame(x, y)
head(data)
#    x  y
# 1 17  2
# 2  5  8
# 3  1  3
# 4 10  1
# 5  4 10
# 6 18 11
data <- data[-c(5, 10, 15, 20, 25), ]
head(data)
#    x  y
# 1 17  2
# 2  5  8
# 3  1  3
# 4 10  1
# 6 18 11
# 7 25 15
data[6, ]
#    x  y
# 7 25 15
data["6", ]
#    x  y
# 6 18 11

请注意,数据的第 6 行的行名称为“7”,但名称为“6”的行是数据框中的第 5 行,因为我们删除了第 5 行。 which 函数将为您提供索引值,但如果您通过查看打印输出来识别离群值,您将获得行名称,这可能与索引不同。如果我们想删除 x 中大于 24 的值,这是一种方法:

data[data$x<25, ]

在研究了数据之后,我认为最好的解释是索引已关闭。这与 dcarlson 所说的一致——它可能会删除第 1,645 行,只是没有这样标记。我认为最好的解决方案是使用 subset:

data <- subset(data, Yield.Decline < 100)

与尝试根据其值删除任何给定行(该行可能会意外 运行 多次而不会错误地删除其他行)相比,这是一个更可靠的解决方案。