簡體   English   中英

如何從數據框中識別和提取重復項?

[英]How can I identify and extract duplicates from data frame?

我的目標是檢查患者是否在同一天使用兩種葯物。 在示例中,患者 1 在同一天使用葯物 A 和葯物 B,但我想用代碼提取它。

df <- data.frame(id = c(1,1,1,2,2,2),    
                 date = c("2020-02-01","2020-02-01","2020-03-02","2019-10-02","2019-10-18","2019-10-26"),    
                 drug_type = c("A","B","A","A","A","B"))      
df$date <- as.factor(df$date)
df$drug_type <- as.factor(df$drug_type)

為此,我首先制作了日期和葯物類型因子變量。 接下來我使用了以下代碼:

df %>%  
  mutate(lev_actdate = as.factor(actdate))%>%        
  filter(nlevels(drug_type)>1 & nlevels(date) < nrow(date))

但是我失敗了。 我假設如果患者在同一日期使用兩種葯物,則日期列中的級別數將小於其行號。 但是,現在我不知道如何用代碼來實現。

此外,我對以下內容感到奇怪:

如果我使用nlevels(df$date) ,將返回正確的結果,但是當我使用df %>% nlevels(date)時,將返回錯誤並顯示

“nlevels(., df$date) 錯誤:未使用的參數 (df$date)”

你能告訴我為什么會這樣嗎?我該如何解決? 感謝您的時間。

你可以使用類似的東西

library(dplyr) 

df %>%
  group_by(id, date) %>%
  filter(n_distinct(drug_type) >= 2)

df %>% nlevels(date)nlevels(df, date)相同,后者與nlevels(df$date)不同。 您可以嘗試df %>% nlevels(.$date)或者df %>% {nlevels(.$date)}而不是后者。

你需要這樣的東西嗎?

library(dplyr)

df %>% 
  group_by(date) %>% 
  distinct() %>% 
  summarise(drug_type_sum = toString(drug_type))
  date       drug_type_sum
  <fct>      <chr>        
1 2019-10-02 A            
2 2019-10-18 A            
3 2019-10-26 B            
4 2020-02-01 A, B         
5 2020-03-02 A     

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM