【问题标题】:Deleting multiple Rows based on other Colums Value in R根据R中的其他列值删除多行
【发布时间】:2021-08-09 20:14:21
【问题描述】:

我希望有人可以帮助我找到解决问题的正确方向 假设我们有一个这样的数据框

year Plant
2009 Monstera
2010 Monstera
2011 Monstera
2012 Monstera
2014 Monstera
2009 Pilea
2010 Pilea
2011 Pilea
2011 Philodendron
2012 Philodendron
2013 Philodendron

如果年份从 2009 年开始,我想删除植物的所有行,但如果跳过一年,我想停止 最终的数据框应该是这样的

year Plant
2014 Monstera
2011 Philodendron
2012 Philodendron
2013 Philodendron

在论坛上,我在 excel 中找到了有关此问题的一些信息,但是由于我是绝对的编程和 R 初学者,因此无法使其正常工作。

这是我目前不起作用的代码想法

list1<-list(unique(plants))

For (i in list1){
     if (dataset$year==2009){
     while i 
     -[c(year==2009)]
     ....
 break
  } else {
    ....

我知道它不多,但我真的尝试过,希望有人能提供帮助

谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    如果我理解正确的逻辑,你可以试试这个方法。

    使用dplyr 包,根据Plant 以及连续年份(行间相差1 年,例如2009、2010、2011 等)将dataset 分组。 .).

    然后,保留或filter每组的first年份不是2009年的数据行。

    最后的ungroupselect 将删除编造的Group 列,因此您的结果仅包括yearPlant

    library(dplyr)
    
    dataset %>%
      group_by(Plant, Group = c(0, cumsum(diff(year) != 1))) %>%
      filter(first(year) != 2009) %>%
      ungroup() %>%
      select(-Group)
    

    输出

       year Plant       
      <int> <chr>       
    1  2014 Monstera    
    2  2011 Philodendron
    3  2012 Philodendron
    4  2013 Philodendron
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多