Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:当行计数为>;时,如何通过数据帧从另一个组中删除具有条件的行;1._R_Filter - Fatal编程技术网

R:当行计数为>;时,如何通过数据帧从另一个组中删除具有条件的行;1.

R:当行计数为>;时,如何通过数据帧从另一个组中删除具有条件的行;1.,r,filter,R,Filter,我有以下示例数据集: structure(list(Vno = c(1111, 1111, 2222, 3333, 3333, 4444, 5555, 5555), ID = c("A001", "X011", "B002", "C003", "Y033", "D004", "E005", "X055"), Name = c("John", "S/O JJJ", "S/O LLL", "Jane", "D/O MMM", "S/O ZZZ", "Nicole", "D/O ZZZ")),

我有以下示例数据集:

structure(list(Vno = c(1111, 1111, 2222, 3333, 3333, 4444, 5555, 
5555), ID = c("A001", "X011", "B002", "C003", "Y033", "D004", 
"E005", "X055"), Name = c("John", "S/O JJJ", "S/O LLL", "Jane", 
"D/O MMM", "S/O ZZZ", "Nicole", "D/O ZZZ")), row.names = c(NA, 
-8L), class = c("tbl_df", "tbl", "data.frame"))
输出:

> df
# A tibble: 8 x 3
    Vno ID    Name   
  <dbl> <chr> <chr>  
1  1111 A001  John   
2  1111 X011  S/O JJJ
3  2222 B002  S/O LLL
4  3333 C003  Jane   
5  3333 Y033  D/O MMM
6  4444 D004  S/O ZZZ
7  5555 E005  Nicole 
8  5555 X055  D/O ZZZ
>df
#一个tibble:8x3
Vno ID名称
1111A001约翰
2 1111 X011 S/O JJJ
3222 B002 S/O LLL
4 3333 C003简
5 3333 Y033 D/O MMM
6 4444 D004 S/O ZZZ
7 5555 E005尼科尔
85555x055 D/O ZZZ
当GROUPBY(Vno)计数大于1时,期望的输出是过滤掉以“S/O”或“D/O”开头的名称。但是,我下面的尝试甚至删除了带有“S/O”或“D/O”的单行:

pt_byVno <- df %>%
  group_by(Vno) %>%
  filter(!grepl('S/O|D/O',Name)) %>%
  print
pt_byVno%
分组依据(Vno)%>%
过滤器(!grepl('S/O | D/O',Name))%>%
打印
Vno ID名称
1111A001约翰
2222B002标记
344444 D004尼科尔
所需输出应为:

# A tibble: 5 x 3
    Vno ID    Name   
  <dbl> <chr> <chr>  
1  1111 A001  John   
2  2222 B002  S/O LLL
3  3333 C003  Jane   
4  4444 D004  S/O ZZZ
5  5555 E005  Nicole 
#一个tible:5 x 3
Vno ID名称
1111A001约翰
2222 B002 S/O LLL
3333 C003简
4444 D004 S/O ZZZ
5555 E005尼科尔

感谢所有R专家在此提供的帮助,谢谢

您可以选择组中只有一行的行或其中没有
的S/O | D/O'

library(dplyr)
df %>% group_by(Vno) %>% filter(n() == 1 | !grepl('S/O|D/O', Name))

#    Vno ID    Name   
#  <dbl> <chr> <chr>  
#1  1111 A001  John   
#2  2222 B002  S/O LLL
#3  3333 C003  Jane   
#4  4444 D004  S/O ZZZ
#5  5555 E005  Nicole 
库(dplyr)
df%>%group_by(Vno)%>%filter(n()==1 |!grepl('S/O | D/O',Name))
#Vno ID名称
#      
#1111A001约翰
#2222 B002 S/O LLL
#3333 C003简
#4444 D004 S/O ZZZ
#5555 E005尼科尔

您可以选择组中只有一行的行或其中没有
的S/O | D/O'

library(dplyr)
df %>% group_by(Vno) %>% filter(n() == 1 | !grepl('S/O|D/O', Name))

#    Vno ID    Name   
#  <dbl> <chr> <chr>  
#1  1111 A001  John   
#2  2222 B002  S/O LLL
#3  3333 C003  Jane   
#4  4444 D004  S/O ZZZ
#5  5555 E005  Nicole 
库(dplyr)
df%>%group_by(Vno)%>%filter(n()==1 |!grepl('S/O | D/O',Name))
#Vno ID名称
#      
#1111A001约翰
#2222 B002 S/O LLL
#3333 C003简
#4444 D004 S/O ZZZ
#5555 E005尼科尔

以下场景的abt方式:
结构(列表(Vno=c(111111122333333344455555566666666),ID=c(“A001”、“X011”、“B002”、“C003”、“Y033”、“D004”、“E005”、“X055”、“F066”、“F067”),名称=c(“约翰”、“S/O JJJ”、“S/O LLL”、“简”、“D/O MMM”、“S/O ZZZZZ”、“妮可”、“D/O BBB”)、“D/O BBB”),row.names=c(NA,-10L),class=c(“tbl_df”,“tbl”,“data.frame”))
在真实环境中,当他们没有自己的永久名称时,如何保持D/O ZZZ?@ana你想在这里做什么?5555的D/O ZZZ有两行,因此带有D/O ZZZ的行将被删除,对吗?Hi Ronak,为了保留5555 D/O ZZZ,在真实上下文中,尚未获得永久名称。因此需要保留记录,直到出现永久名称,不再带有“D/O或S/O”。希望这能澄清这个要求。我仍然不明白你是如何定义“永久名称”的,但你能不能把它作为一个新问题来问,这样这篇文章就只针对一个问题?设法解决了这个额外的问题,通过按函数向组添加一个参数。无论如何谢谢你!如何处理以下场景:
结构(列表(Vno=c(1111111111223333333344445555555555666666),ID=c(“A001”、“X011”、“B002”、“C003”、“Y033”、“D004”、“E005”、“X055”、“F066”、“F067”),Name=c(“John”、“S/O JJJ”、“S/O LLL”、“Jane”、“D/O MMM”、“S/O ZZZZ”、“Nicole”、“D/O ZZZZ”、“D/O BBB”、“D/O BBB”)),row.names=c(NA,-10L),类=c(“tbl_df”,“tbl”,“数据帧”))
在真实环境中,当他们没有自己的永久名称时,如何仍然保留D/O ZZZ?@ana你想在这里做什么?5555的D/O ZZZ有两行,因此带有D/O ZZZ的行将被删除,对吗?嗨,Ronak,要保留5555 D/O ZZZZ,就像在真实环境中一样,永久名称尚未获得。因此需要保留记录,直到l存在永久名称,不再带有“D/O或S/O”。希望这能澄清要求。我仍然不明白你如何定义“永久名称”但是你能不能把它当作一个新问题来问,这样这篇文章就只针对一个问题了?通过按函数向组_添加一个参数,成功地解决了这个额外的问题。无论如何,谢谢!