I have a dataset with two variables ("Aufzeichnungen" , "ID"). I want to remove all lines of the Dataset that contains the word "next" and also remove the following lines until the next ID-Number starts.

I have different cases and every ID is a customertreatment, but the word "next" and all the following lines of the same ID have to be removed.

That's my input:

Aufzeichnungen ID
1                                                   07.03.22   A: stechender Schmerz,    scharfkantig  1
2                                                                                                D/B:  1
3                                                                                                  T:  1
4                                                             pat aht an 36 üz distal, seit paartagen  1
5                                                  36 vipr++, perk-, keine c zu entdekcne,üz bilfuird  1
6          pat aufgekläörtggf  RÖ um c auszuschileßen, pat verweigert RÖ aus Angst vor Strahlung, pat  1
7                      aufgeklärt angst nicht nötig und c unter fllg oder apprx nicht auszuschließen,  1
8                                                   pat knirscht, schiene empohlen, pat meldet sich..  1
9                                                                                next: noch schmerezn  1
10                                                                                             an 36?  1
11                                                             20.11.21                  A: kontrolle  2
12                                                                                               D/B:  2
13                                                                                                 T:  2
14 ->Pat. geht es besser hat keine blutung mehr, bltung stabil, pat aufgeklärt muss noch 1 tag stabil  2
15          bleiben dann sollten keine Nahcbltung mehr kommen! wenn doch dann montag gleich wieder zu  2
16                                                                     rkontrolle und in towche Nahtx  2
17                                                              ->gute wundheilung, tupfer mitgegeben  2
18                                                                                                 ->  2
19                                                                                               <NA>  2
20                                                                            next 0 1+Kontrolle+Naht  2
21                                                                                          ex bei F2  2
22                                                                                              K3/BV  2

that's my input.

My output should look like:

    Aufzeichnungen ID
1                                                   07.03.22   A: stechender Schmerz,    scharfkantig  1
2                                                                                                D/B:  1
3                                                                                                  T:  1
4                                                             pat aht an 36 üz distal, seit paartagen  1
5                                                  36 vipr++, perk-, keine c zu entdekcne,üz bilfuird  1
6          pat aufgekläörtggf  RÖ um c auszuschileßen, pat verweigert RÖ aus Angst vor Strahlung, pat  1
7                      aufgeklärt angst nicht nötig und c unter fllg oder apprx nicht auszuschließen,  1
8                                                   pat knirscht, schiene empohlen, pat meldet sich..  1
9                                                                               
11                                                             20.11.21                  A: kontrolle  2
12                                                                                               D/B:  2
13                                                                                                 T:  2
14 ->Pat. geht es besser hat keine blutung mehr, bltung stabil, pat aufgeklärt muss noch 1 tag stabil  2
15          bleiben dann sollten keine Nahcbltung mehr kommen! wenn doch dann montag gleich wieder zu  2
16                                                                     rkontrolle und in towche Nahtx  2
17                                                              ->gute wundheilung, tupfer mitgegeben  2
18                                                                                                 ->  2
19                                                                                               <NA>  2
20    

So that lines 9,10 and 20,21,22 are removed.

I tried with new_df= PKV[!grepl("ext",PKV$Aufzeichnungen),]
but this removes just one line and is not specific for the ID

r

推荐答案

We can use slice function from dplyr and grepl the first index having the word next or Next and slice the above lines

library(dplyr)

PKV |> group_by(ID) |>
   slice(1:(which(grepl("[Nn]ext" , Aufzeichnungen))[1]-1))
  • output
# A tibble: 17 × 2
# Groups:   ID [2]
   Aufzeichnungen                                                            ID
   <chr>                                                                  <int>
 1 "07.03.22   A: stechender Schmerz,    scharfkantig"                        1
 2 "D/B:"                                                                     1
 3 "T:"                                                                       1
 4 "pat aht an 36 üz distal, seit paartagen"                                  1
 5 "36 vipr++, perk-, keine c zu entdekcne,üz bilfuird"                       1
 6 "pat aufgekläörtggf  RÖ um c auszuschileßen, pat verweigert RÖ aus An…     1
 7 "aufgeklärt angst nicht nötig und c unter fllg oder apprx nicht auszu…     1
 8 "pat knirscht, schiene empohlen, pat meldet sich.."                        1
 9 "20.11.21                  A: kontrolle"                                   2
10 " D/B:"                                                                    2
11 "T:"                                                                       2
12 "->Pat. geht es besser hat keine blutung mehr, bltung stabil, pat auf…     2
13 "bleiben dann sollten keine Nahcbltung mehr kommen! wenn doch dann mo…     2
14 "rkontrolle und in towche Nahtx"                                           2
15 "->gute wundheilung, tupfer mitgegeben"                                    2
16 "->"                                                                       2
17 "<NA>"                                                                     2

For efficiency we can use data.table library

library(data.table)

setDT(PKV)
PKV[ , .SD[1:(which(grepl("[Nn]ext" , Aufzeichnungen))[1]-1)] , by = "ID"][]

R相关问答推荐

根据条件从字符串中 Select 数字

x 实验室未显示完整?我应该如何设置参数?

R data.table 通过三个变量交叉连接

如何将一行小标题列表转换为向量列表

带有 ggplot 线和堆积条的透视数据

如何将 pivot_longer 与 name_pattern 一起使用

使用 R 中 Shiny 中的 renderPlot 调整要在绘图标题中显示的小 p 值的位数

匹配 R 中不完全匹配的字符串

根据 R 中另一列中下面的行 Select 最后一个值

计算边际效应:为什么 ggeffect 和 ggemmeans 给出不同的答案?

删除特定字符串和之后的任何内容

如何删除字符串中的第n个字符?

如何合并数据框中具有相同前缀的行?

无需列出向量即可在向量列表上应用均值的函数(对函数调用的更改)

如何找到一个列中的值与多个列中的值的最小差异

如何系统地将系统数据写入excel表?

有没有办法初始化或修改允许引用先前值的列表?

拆分字母序列,同时保留原始序列位置

判断线性混合效应模型的正态假设

如何为 r markdown pdf 输出创建自定义示例环境?