首页 > 解决方案 > 如何从数据框中排除行(有条件)?

问题描述

这是我的数据框

dput(head(df, 20))
structure(list(Varietes = c("EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45","EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45", "EPS45"), Varietes.rep = c("EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2","EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2", "EPS45_2"), Valeur = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), ligne.rep = c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), Pied = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),Date.floraison.mâle = structure(c(1625356800, 1626480000, 1626393600, NA,1626739200,1626048000, 1626220800, 1626220800, 1626220800, 1626220800, 1625702400, 1626566400,1626048000, 1626739200, NA, 1626048000, 1626307200, 1626480000,1626220800,1626048000), tzone = "UTC", class = c("POSIXct", "POSIXt")), Date.floraison.femelle = structure(c(1625702400, NA, NA, NA, 1626825600, 1625875200, 1626739200, 1626220800, 1626480000, 1626048000, 1626739200, NA, 1626307200, 1627171200, NA, 1626220800, 1626739200, 1626825600, 1626566400, 1626307200), tzone = "UTC", class = c("POSIXct", "POSIXt")), ASIi = c(4, -44394, -44393, 0, 1, -2, 6, 0, 3, -2, 12, -44395, 3, 5, 0, 2, 5, 4, 4, 3), Com = c(NA, NA, NA, "N", NA, NA, NA, NA, NA, NA, NA, "Nch", NA, NA, "N", NA, NA, NA, NA, NA), Detruit = c(NA_character_, NA_character_, NA_character_, NA_character_,NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, NA_character_)), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))

我想从我的数据框中排除所有带有评论(列“Com”)的行,如 N 或 Nch。

例如:

   Com                
1. NA              
2. N               
3. NA                
4. Nch              

在:

  Com               
1.NA             
3.NA                  

所以最后,我的列“Com”中只有 NA 值。

我有第二个问题。在“Varietes.rep”列中,我得到了不同的品种,我想知道每个品种,“Com”列中有多少行“NA”值、“N”值、“Nch”值等等.

你知道我该怎么做吗?

非常感谢。

标签: r

解决方案


回答第一个问题:

library(dplyr)
df %>% filter(is.na(Com))

回答第二个问题:

df %>% group_by(Varietes.rep) %>% count(Com)

推荐阅读