我难以正确缩小数据框中的行号。
我有一个名为“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 时,我无法更改数据框中与列表中实际行数匹配的行号。
任何人都可以告诉我如何解决这个问题吗?
答案 0 :(得分:9)
您可以这样做:
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
答案 1 :(得分:3)
您也可以使用不以相同方式存储row.names的data.table
包(请参阅data.table intro,而不是使用打印行号。
请参阅键部分,了解data.table如何与行名称和键
一起使用 data.table
继承自data.frame
,因此如果函数和pacakges仅接受 data.frames ,则data.table
为data.frame
。
例如
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