2014-11-03 84 views
1

我想从数据框中删除一行,并且我想要在删除该行后按顺序保留行编号。例如,如果删除行#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.7.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 

有什么建议吗?

+2

尝试'row.names(DataFrame_remove)< - NULL'。你不需要一个循环来删除一些行。 'DateFrame [ - (208:212),]' – akrun 2014-11-03 15:03:52

+0

谢谢,这就是我需要的! – 2014-11-03 15:16:20

回答

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