簡體   English   中英

如何刪除R中數據幀的第一行?

[英]How to delete the first row of a dataframe in R?

我有一個包含11列的數據集,每列超過1000行。 列標記為V1,V2,V11等。我使用“c”命令將名稱替換為對我更有用的名稱。 我沒有意識到第1行還包含每列的標簽,我的實際數據從第2行開始。

有沒有辦法刪除第1行並減少?

保留原始文件中的標簽,如下所示:

df = read.table('data.txt', header = T)

如果您有名為x和y的列,則可以像這樣解決它們:

df$x
df$y

如果您想實際刪除data.frame中的第一行,可以使用負數索引,如下所示:

df = df[-1,]

如果您想從data.frame中刪除列,可以為其指定NULL:

df$x = NULL

以下是如何在R中創建和操作data.frame的一些簡單示例:

# create a data.frame with 10 rows
> x = rnorm(10)
> y = runif(10)
> df = data.frame( x, y )

# write it to a file
> write.table( df, 'test.txt', row.names = F, quote = F )

# read a data.frame from a file: 
> read.table( df, 'test.txt', header = T )

> df$x
 [1] -0.95343778 -0.63098637 -1.30646529  1.38906143  0.51703237 -0.02246754
 [7]  0.20583548  0.21530721  0.69087460  2.30610998
> df$y
 [1] 0.66658148 0.15355851 0.60098886 0.14284576 0.20408723 0.58271061
 [7] 0.05170994 0.83627336 0.76713317 0.95052671

> df$x = x
> df
            y           x
1  0.66658148 -0.95343778
2  0.15355851 -0.63098637
3  0.60098886 -1.30646529
4  0.14284576  1.38906143
5  0.20408723  0.51703237
6  0.58271061 -0.02246754
7  0.05170994  0.20583548
8  0.83627336  0.21530721
9  0.76713317  0.69087460
10 0.95052671  2.30610998

> df[-1,]
            y           x
2  0.15355851 -0.63098637
3  0.60098886 -1.30646529
4  0.14284576  1.38906143
5  0.20408723  0.51703237
6  0.58271061 -0.02246754
7  0.05170994  0.20583548
8  0.83627336  0.21530721
9  0.76713317  0.69087460
10 0.95052671  2.30610998

> df$x = NULL
> df 
            y
1  0.66658148
2  0.15355851
3  0.60098886
4  0.14284576
5  0.20408723
6  0.58271061
7  0.05170994
8  0.83627336
9  0.76713317
10 0.95052671

您可以使用負索引來刪除行,例如:

dat <- dat[-1, ]

這是一個例子:

> dat <- data.frame(A = 1:3, B = 1:3)
> dat[-1, ]
  A B
2 2 2
3 3 3
> dat2 <- dat[-1, ]
> dat2
  A B
2 2 2
3 3 3

也就是說,您可能遇到的問題不僅僅是刪除最終排在第1行的標簽.R更有可能將數據解釋為文本,然后轉換為因子。 檢查str(foo)foo是你的數據對象,說明數據類型。

聽起來你在調用中只需要header = TRUE來讀取數據(假設你通過read.table()或其中一個包裝器讀取它。)

沒有人可能真的想要刪除第一行。 因此,如果您正在尋找有意義的東西,那就是條件選擇

#remove rows that have long length and "0" value for vector E

>> setNew<-set[!(set$length=="long" & set$E==0),]

dat <- dat[-1, ]工作但它殺死了我的數據幀,將其更改為另一種類型。 不得不使用dat <- data.frame(dat[-1, ])但這可能是一種特殊情況,因為這個數據框最初只有一列。

我不是專家,但這可能也有效,

dat <- dat[2:nrow(dat), ]

雖然我同意最多的投票答案,但這是另一種保留除第一行之外的所有行的方法:

dat <- tail(dat, -1)

這也可以使用Hadley Wickham的dplyr軟件包來完成。

dat <- dat %>% slice(-1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM