簡體   English   中英

根據一列中的值從數據框中刪除行

[英]Remove rows from a dataframe based on a value in one column

我有一個數據框(從csv文件導入),如下所示

moose     loose     hoose
   2        3         8
   1        3         4
   5        4         2
   10       1         4

R代碼應生成一個均值列,然后我要刪除均值小於4的所有行,從而得到以下結果:

 moose     loose     hoose     mean 
   2        3         8        4.3
   1        3         4        2.6
   5        4         2        3.6
   10       1         4         5

最終應為:

  moose     loose     hoose    mean 
    2        3         8       4.3
    10       1         4        5

我如何在R中做到這一點?

 dat2 <- subset(transform(dat1, Mean=round(rowMeans(dat1),1)), Mean >=4)
 dat2
  # moose loose hoose Mean
 #1     2     3     8  4.3
 #4    10     1     4  5.0

使用data.table

 setDT(dat1)[, Mean:=rowMeans(.SD)][Mean>=4]
 #  moose loose hoose     Mean
 #1:     2     3     8 4.333333
 #2:    10     1     4 5.000000

我假設您的數據稱為d 然后,您運行:

d$mean <- rowMeans(d)  ## create a new column with the mean of each row
d <- d[d$mean >= 4, ]  ## filter the data using this column in the condition

我建議您閱讀有關在data.frame創建變量和過濾數據的信息。 這些是非常常見的操作,可以在許多情況下使用。

您還可以within使用,它允許您分配/刪除列,然后返回轉換后的數據。 df開頭

> df
#  moose loose hoose
#1     2     3     8
#2     1     3     4
#3     5     4     2
#4    10     1     4

> within(d <- df[rowMeans(df) > 4, ], { means <- round(rowMeans(d), 1) })
#  moose loose hoose means
#1     2     3     8   4.3
#4    10     1     4   5.0

暫無
暫無

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

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