【发布时间】:2015-10-07 23:43:27
【问题描述】:
我有一个 data.frame,其行名是日期列表,并且有一列收盘价。 我想删除收盘价等于上一行的行。
我试图写一个代码,但它不起作用,我不明白这是语法错误还是代码本身完全错误。
removefunction <- function(x) {
for(i in 1:nrow(x)) {
if(x[1+i] == x[i]) {
x[1+i] <- "NA"}}
na.omit(x)
}
我猜data.frame中的值选择有问题,但我不知道如何解决。
编辑: 这是我的 data.frame 的示例:
% row.names Close
1 2001-01-01 1837.36
2 2001-01-02 1785.86
3 2001-01-03 1875.56
4 2001-01-04 1855.82
5 2001-01-05 1807.13
6 2001-01-08 1804.04
7 2001-01-09 1810.98
8 2001-01-10 1828.50
9 2001-01-11 1847.37
10 2001-01-12 1835.53
11 2001-01-15 1835.53
12 2001-01-16 1847.13
我的目标是删除第 11 行,因为它与第 10 行具有相同的 Close 值。
错误是:[.data.frame(x, 1 + i) 中的错误:选择了未定义的列
【问题讨论】:
-
也许你可以试试
diff:toremove <- c(F, diff(yourvar)==0)会给你要删除的行的索引 -
请准确说明“它不起作用”的含义(错误消息)并提供示例数据集。
-
x[diff(x$closing_price)!=0, ] -
查看我的编辑以了解如何使用您的 data.frame 执行此操作(您不需要为此使用函数)。您的错误来自您没有选择任何列的事实,您需要输入
x[i, ]例如选择整个 i-th 行。
标签: r