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

推荐答案

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相关问答推荐

编辑文件后编辑RhandsonTable

从开始时间和结束时间导出时间

r—绘制相交曲线

在使用ggroove后,将图例合并在gplot中

derrr summarise每个组返回多行?

从R导出全局环境中的所有sf(numrames)对象

将嵌套列表子集化为嵌套列表

R中的哈密顿滤波

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

用两种 colored颜色 填充方框图

如何根据R中其他变量的类别汇总值?

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

如何在PrePlot()中将多个元素设置为斜体

如何将这个小列表转换为数据帧?

如何使用FormC使简单算术运算得到的数字是正确的?

仅当后续值与特定值匹配时,才在列中回填Nas

如何阻止围堵地理密度图?

通过比较来自多个数据框的值和R中的条件来添加新列

从多行中 Select 最小值

从data.table列表中提取特定组值,并在R中作为向量返回