R:如何从纵向格式的多个字符串列表中删除ID



我之前有一篇文章,讲的是如果ID中的任何一行包含以下纵向格式数据帧中的某些字符串(例如A或D(,如何删除ID。以下是我从早期帖子(r2evans,akrun,ThomasIsCoding(中收到的R代码示例,顺序为:

  1. d%>%group_by(id(%>%filter(!any(dx%in%c("A","D"(((%>%取消组合((
  2. filter(d,!id%in%id[dx%in%c("A","d"(](
  3. 子集(d,!ave(dx%,%c("A","d"(,id,FUN=任意((

虽然这些都很好,但我意识到我必须删除600多个字符串(例如,A、D、E2、F112、G203等(,所以我为这些字符串的列表创建了一个没有列名的csv文件。1.列出清单是正确的方法吗?2.如果我打算使用字符串列表的文件,我应该如何修改上述R代码?尽管我查看了其他帖子或谷歌搜索结果,但我不知道该怎么处理我的案件。如果有任何建议,我将不胜感激!

数据帧:

id   time   dx
1     1     C
1     2     B
2     1     A
2     2     B
3     1     D
4     1     G203
4     2     E1

我想要的结果:

id    time  dx
1     1     C
1     2     B

更新:Tarjae的以下回答解决了这个问题。以下是解决方案的R代码。

my_list<-read.csv("my_list.csv"(

columnname
A
D
E2
F112
G203
  1. d%>%group_by(id(%>%filter(!any(%my_list$columnname中的dx%(%>%取消组合((
  2. 筛选器(d,!id%in%id[dx%in%my_list$columnname](
  3. 子集(d,!ave(dx%in%my_list$columnname,id,FUN=any((

这是一个很好的策略:

将您的值放在向量或列表中,此处为my_list,然后用!求反并使用%in%运算符过滤dx

library(dplyr)
my_list <- c("A", "D")
df %>% 
filter(!dx %in% my_list)
id time   dx
1  1    1    C
2  1    2    B
3  2    3    B
4  4    1 G203
5  4    1   E1

扩展值列表:my_list <- c("A", "D", "G203", "E1")

提供相同的代码:

library(dplyr)
df %>% 
filter(!dx %in% my_list)
id time dx
1  1    1  C
2  1    2  B
3  2    3  B

相关内容

  • 没有找到相关文章

最新更新