2012-09-11 35 views
6

Tôi đang gặp khó khăn khi thu hẹp số hàng trong một khung dữ liệu đúng cách.Cách tự động thu nhỏ số hàng trong khung dữ liệu R khi xóa các hàng trong R

Tôi có tập dữ liệu có tên "mydata" mà tôi đã nhập từ tệp văn bản sử dụng R. Khung dữ liệu có khoảng 200 hàng với 10 cột.

tôi loại bỏ các số liên tiếp 3, 7, 9, 199 bằng cách sử dụng:

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

Khi tôi chạy lệnh này, hàng 3,7,9,199 đã mất hết khỏi danh sách nhưng số lượng hàng doesn' t tự động thu nhỏ xuống 196, nhưng vẫn ở 200. Tôi cảm thấy như thế nào bằng cách nào đó những con số hàng được gắn vào mỗi "hàng" như là một phần của dataframe?

Làm cách nào để khắc phục sự cố này?

Điều gì khiến tôi càng khó hiểu hơn là khi tôi nhập tệp văn bản bằng cách sử dụng R Studio, tôi không gặp bất kỳ sự cố nào. (Tôi thấy 196 khi tôi chạy lệnh trên). Nhưng khi sử dụng R, tôi không thể thay đổi số hàng trong một khung dữ liệu khớp với số hàng thực tế trong danh sách.

Mọi người có thể vui lòng cho tôi biết cách khắc phục sự cố này không ??

Trả lời

9

Bạn chỉ có thể làm:

rownames(mydata) <- NULL 

sau khi thực hiện Subsetting.

Ví dụ:

> 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 
+0

Tôi chỉ cần chạy lệnh này và nó hoạt động !!! cảm ơn bạn!! Tuy nhiên, – Pirate

+0

một câu hỏi nữa. Tôi có phải chạy lệnh Null mỗi lần tôi xóa các hàng không? – Pirate

+0

@Marine: Bạn không phải làm điều đó mỗi khi bạn xóa hàng, chỉ cần bất cứ khi nào bạn muốn đặt lại tên hàng (có thể là sau khi bạn đã thực hiện nhiều lần xóa) –

3

Bạn cũng có thể sử dụng gói data.tablekhông row.names cửa hàng trong cùng một cách (xem data.table intro, thay vào đó nó sẽ in với số lượng hàng.

Xem phần phím cho các công trình như thế nào data.table với tên hàngphím

data.table thừa hưởng từ data.frame, do đó, một data.table là một data.frame nếu chức năng và pacakges chỉ chấp nhận data.frames.

ví dụ

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 
Các vấn đề liên quan