r - 如何在R中的数据框中的列中查找和删除具有相同连续值的一定数量的行?

标签 r dataframe

在我的数据框中有一列以“声音”和“响应”作为值。理想情况下,模式是两个声音后跟一个响应。但是,可能会出现三个声音后跟一个响应。

当 R 在我的数据中发现这种模式时,我如何告诉它升起一个标志?在删除第三个声音行之前,我需要单独查看每个案例。

>df <- data.frame(V1=rep("SN", 7),  
             V3=c("Sound", "Sound", "Response", "Sound", "Sound", "Sound", "Response"), 
             V4=c("XYZc02i03", "XYZq02i03", 200, "ZYXc01i30", "ZYXq01i30", "ZYXc01i35", 100), 
             stringsAsFactors=FALSE) 

V1       V3        V4
SN    Sound XYZc02i03
SN    Sound XYZq02i03
SN Response       200
SN    Sound ZYXc01i30
SN    Sound ZYXq01i30
SN    Sound ZYXc01i35
SN Response       100     

因此,在找到三个连续的声音并删除其中的最后一个(即紧接在以下响应之前的那个)之后,我应该有这样的所需模式:

V1       V3        V4
SN    Sound XYZc02i03
SN    Sound XYZq02i03
SN Response       200
SN    Sound ZYXc01i30
SN    Sound ZYXq01i30
SN Response       100  

很抱歉,我一直在发布这些基本问题。一如既往,我们非常感谢任何想法!

最佳答案

cumsum(rle(df$V3)$lengths)[rle(df$V3)$lengths == 3]
[1] 6

这将返回“声音”连续第三个位置的向量。现在您可以轻松删除它们或制作一些列来标记这些位置。

关于r - 如何在R中的数据框中的列中查找和删除具有相同连续值的一定数量的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038125/

相关文章:

r - 什么时候在 R 中使用函数 'structure()'?

html - R:将 ggplot 对象转换为交互式图表

javascript - 如何重定向到 Shiny 的动态URL?

python - pandas dataframe 删除 groupby 中超过 n 行的组

r - 在 r 中将字符列分成行并将多列合并为一列的最有效方法

python - R 用户的 Numpy?

r - 当 x 轴为数字(周数)时,每 4 个月休息一次 ggplot2

python - 值错误 : Length mismatch: Expected axis has 0 elements while creating hierarchical columns in pandas dataframe

python - Pandas:如何将字典映射到 2 列?

python - 如何在 matplotlib 表上显示数据帧索引名称?