繁体   English   中英

如何删除数据框中的行n和n + 1?

[英]How to delete row n and n+1 in a dataframe?

我有几个数据帧,我想在其中删除与某个字符串匹配的每一行。 我使用以下代码来执行此操作:

 df[!(regexpr("abc", df$V4) ==1),]

如何删除后面的行,例如,如果我删除上面代码指定的行n,我怎么能另外删除行n + 1?

我的第一个尝试是简单地找出所需行的索引,但这不起作用,因为我需要删除不同长度的不同数据帧中的行。 因此指数各不相同。

谢谢!

我建议直接取出并操纵逻辑矢量。 假设我们有向量:

x = c(5,0,1, 4, 3)

我们想做:

x[x > 3]

首先,请注意:

R> (s_n = x>3)
[1]  TRUE FALSE FALSE  TRUE FALSE

所以

R> (s_n1 = as.logical(s_n + c(F, l[1:(length(s_n)-1)])))
[1]  TRUE  TRUE FALSE  TRUE  TRUE

因此,

x[s_n1]

给你你想要的。


在您的特定示例中,类似于:

s_n = !(regexpr("abc", df$V4) == 1)
s_n1 = as.logical(s_n + c(F, l[1:(length(s_n)-1)])))
df[s_n1, ]

应该管用。

在逻辑表达式上使用which(),然后只需在结果中添加1即可。

sel <- which(grep("abc", df$V4))
sel <- c(sel, sel+1)
df[-sel,]
df[which(!(regexpr("abc", df$V4) ==1))+c(0,1),]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM