我有一个包含两个变量("Aufzeichnungen"、"ID")的数据集.我想删除数据集中包含单词"Next"的所有行,并删除以下行,直到下一个ID-Number开始.

我有不同的 case ,每个ID都是CustomerTreatment,但是单词"Next"和相同ID的所有以下行都必须删除.

这就是我的观点:

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

这是我的意见.

我的输出应该如下所示:

    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    

这样就删除了第9,10 and 20,21,22行.

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

推荐答案

我们可以使用dplyrgrepl中的slice函数,第一个索引具有单词nextNext,然后对上面的行进行切片

library(dplyr)

PKV |> group_by(ID) |>
   slice(1:(which(grepl("[Nn]ext" , Aufzeichnungen))[1]-1))
  • 输出
# 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 100 library

library(data.table)

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

R相关问答推荐

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

如何对数据集进行逆向工程?

R中的子集文件—读取文件名索引为4位数字序列,例如0001到4000,而不是1到4000)

在"gt"表中添加第二个"groupname_col",而不连接列值

基于多列将值链接到NA

使用外部文件分配变量名及其值

在R中按行按列范围查找最大值的名称

根据现有列的名称和字符串的存在进行变异以创建多个新列

try 将 colored颜色 编码添加到ggploly的标题中

安全地测试文件是否通过R打开

计算直线上点到参考点的总距离

如何从向量构造一系列双边公式

使用shiny 中的所选要素行下拉菜单

解析嵌套程度极高的地理数据

如何计算每12行的平均数?

删除在R中的write.table()函数期间创建的附加行

为R中的16组参数生成10000个样本的有效方法是什么?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

分隔日期格式为2020年7月1日

即使使用相同的种子,mtry值也取决于TuneGrid范围