从数据框中删除行并保持行编号顺序

时间:2014-11-03 15:02:15

标签: r dataframe row subset

我正在尝试从数据框中删除一行,并且我希望在删除行后按顺序保留行编号。例如,如果我删除#208行,编号就像207,209,210,而不是所需的207,208,209。

以下是代码示例:

for(i in 1:210) {
DataFrame_remove<-DataFrame[-c(i),]
}

这是移除#210行后的数据框

              Date         Q     LogQ  ConcLow ConcHigh Uncen  ConcAve Julian Month Day  DecYear MonthSeq        SinDY         CosDY
    207 2008-03-01 236.34381 5.465288  6.81600  6.81600     1  6.81600  57768     3  61 2008.165     1899  0.861701760  5.074151e-01
    208 2008-04-01 195.61188 5.276132  5.33200  5.33200     1  5.33200  57799     4  92 2008.250     1900  1.000000000  3.835054e-13
    209 2008-05-01  48.07530 3.872769  2.32000  2.32000     1  2.32000  57829     5 122 2008.332     1901  0.870285241 -4.925481e-01
    211 2008-07-01  14.15844 2.650311  0.02600  0.02600     1  0.02600  57890     7 183 2008.499     1903  0.008583481 -9.999632e-01
    212 2008-08-01  14.89806 2.701231  0.17600  0.17600     1  0.17600  57921     8 214 2008.583     1904 -0.500000000 -8.660254e-01
    213 2008-09-01  16.97604 2.831803  0.34700  0.34700     1  0.34700  57952     9 245 2008.668     1905 -0.870285241 -4.925481e-01

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

正如@akrun在评论中所提到的,您可以使用简单的rownames(your_data_frame) <- NULL 来执行此操作,您可以更直接地删除行:

以下是一个例子:

首先,一些示例数据:

x <- data.frame(matrix(1:14, ncol = 2))
toRemove <- 3:5

第二,放弃行 - 差距仍然存在:

out <- x[-toRemove, ]
out
#   X1 X2
# 1  1  8
# 2  2  9
# 6  6 13
# 7  7 14

第三,重置行号序列:

rownames(out) <- NULL
out
#   X1 X2
# 1  1  8
# 2  2  9
# 3  6 13
# 4  7 14

但是,有一种更直接的方法:使用"rownames<-"(带引号或反引号),就像这样......

`rownames<-`(x[-toRemove, ], NULL)
#   X1 X2
# 1  1  8
# 2  2  9
# 3  6 13
# 4  7 14