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