删除包含和后面的字符串行

时间:2014-07-15 13:12:12

标签: r plyr

说我们有:

dat <-  data.frame( x1 = c(rep(c("A","B"), each = 4),"B"),
                x2 = rep(c("a","a","b","b", "a","a","a","a","a")),
                x3 = c("cow","pig","cow","cow",
                       "cow","pig","pig","pig",
                       "cow"
                       )
                  ) 

我想保留每个x1:x2组合之前的所有行&#34; pig&#34;在&#34; pig&#34;之后发生并删除所有行。发生。

如果只有&#34;牛&#34;如果只有&#34;猪&#34;那么我会保留所有&#34;奶牛&#34;然后删除所有行。

这个例子将给出:

  x1 x2  x3
1  A  a cow
3  A  b cow
4  A  b cow
5  B  a cow

我可以写ddply例如这个很好,但我知道必须有一个函数来快速获取行&#34; pig&#34;我无法找到并保存循环。

1 个答案:

答案 0 :(得分:1)

使用子集更容易:

 dat[!(dat$x3=='pig'),]
 x1 x2  x3
1  A  a cow
3  A  b cow
4  A  b cow

编辑:要删除第一个'猪'之后的所有行,请执行以下操作:

badrow<-which(dat$x3=='pig')[1]
dat[1:(badrow-1),]

添加一些代码来处理which根本不返回任何内容的情况。