7

我很难正确缩小数据框中的行号。

我有一个名为“mydata”的数据集,我使用R从文本文件中导入。数据框有大约 200 行和 10 列。

我使用以下方法删除了第 3、7、9、199 行:

mydata <- mydata[-c(3, 7, 9, 199),]

当我运行这个命令时,第 3,7,9,199 行从列表中消失了,但行号不会自动缩小到 196,而是保持在 200。我觉得这些行号以某种方式附加到每个“行”作为数据框的一部分?

我该如何解决这个问题?

更让我困惑的是,当我使用R Studio 导入文本文件时,我没有任何问题。(当我运行上述命令时,我看到了 196)。但是在使用R时,我无法更改与列表中实际行数匹配的数据框中的行号。

谁能告诉我如何解决这个问题?

4

2 回答 2

11

你可以简单地做:

rownames(mydata) <- NULL

执行子集后。

例如:

> mydata = data.frame(a=1:10, b=11:20)
> mydata = mydata[-c(6, 8), ]
> mydata
    a  b
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
7   7 17
9   9 19
10 10 20
> rownames(mydata) <- NULL
> mydata
   a  b
1  1 11
2  2 12
3  3 13
4  4 14
5  5 15
6  7 17
7  9 19
8 10 20
于 2012-09-11T01:18:08.287 回答
3

您也可以使用以相同方式存储 row.names的data.table包(请参阅data.table intro,而是使用行号打印。

有关data.table 如何处理行名键的信息,请参阅键部分

data.table继承自 data.frame,所以 adata.table是一个data.frameif 函数,而 pacakges 只接受data.frames

例如

library(data.table)

mydata <- data.table(mydata)
mydata
##      a  b
##  1:  1 11
##  2:  2 12
##  3:  3 13
##  4:  4 14
##  5:  5 15
##  6:  6 16
##  7:  7 17
##  8:  8 18
##  9:  9 19
## 10: 10 20

mydata = mydata[-c(6, 8), ]
mydata
##     a  b
## 1:  1 11
## 2:  2 12
## 3:  3 13
## 4:  4 14
## 5:  5 15
## 6:  7 17
## 7:  9 19
## 8: 10 20
于 2012-09-11T01:49:50.247 回答