如果 ID 中的任何行包含以下縱向格式的資料幀中的某些字串(例如,A 或 D),我之前有一篇關于如何洗掉 ID 的帖子。這些是我從之前的帖子(r2evans、akrun、ThomasIsCoding)中收到的 R 代碼示例,按順序排列:
- d %>% group_by(id) %>% filter(!any(dx %in% c("A", "D") )) %>% ungroup()
- filter(d, !id %in% id[dx %in% c("A", "D") ])
- 子集(d,!ave(dx%in%c(“A”,“D”),id,FUN =任何))
雖然這些都運行良好,但我意識到我必須洗掉 600 多個字串(例如,A、D、E2、F112、G203 等),所以我為這些字串的串列創建了一個 csv 檔案,沒有列名。1. 列出清單是否正確?2. 如果我打算使用字串串列的檔案,我應該如何修改上面的R代碼?盡管我查看了其他帖子或Google 搜索結果,但我不知道如何處理我的案例。我將不勝感激任何建議!
資料框:
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
- d %>% group_by(id) %>% filter(!any(dx%in% my_list$columnname )) %>% ungroup()
- filter(d, !id %in% id[dx %in% my_list$columnname])
- subset(d, !ave(dx %in% my_list$columnname, id, FUN = any))
uj5u.com熱心網友回復:
這是一個很好的策略:
將您的值放在此處的向量或串列中,然后通過使用運算子取反來my_list過濾列:dx!%in%
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425655.html
標籤:r string list delete-row longitudinal
上一篇:將多嵌套字典串列轉換為資料框
