簡體   English   中英

如何在R中的子組中查找重復項

[英]How to find duplicates in subgroups in R

我有很多這樣的患者的檢查數據。

   PN CEA_VAL TEST_DAYS
1   1     2.3        25
2   1     4.6        49
3   1     5.8        67
4   3     1.8        25
5   3     6.7        69
6   4     1.9        44
7   4     3.4        87
8   5     12.4       25
9   5     16.4       25

PN 是患者編號。 CEA_VAL 是生物測試值。 TEST_DAYS 是從治療開始到進行生物測試的時間間隔。

如果把每個患者都看成一個亞組,那么不同亞組之間的TEST_DAYS可以相同。

但我懷疑在一個子組中有一些重復的 TEST_DAYS。 如何在每個子組中找到 TEST_DAYS 的重復項,以及如何刪除它們?

在同一天對同一患者進行多次生物檢測結果是不合邏輯的。 由於生物測試通常在幾周后再次進行。

如果患者有重復的天數,以下代碼應僅返回每一天的第一行:

library(dplyr)

my_df %>%
  group_by(PN, TEST_DAYS) %>%
  slice(1) %>%
  ungroup()

您可以對每個患者使用duplicated來獲取重復值並僅選擇唯一的值。

這可以在基礎 R 中完成:

subset(df, !ave(TEST_DAYS, PN, FUN = duplicated))

#  PN CEA_VAL TEST_DAYS
#1  1     2.3        25
#2  1     4.6        49
#3  1     5.8        67
#4  3     1.8        25
#5  3     6.7        69
#6  4     1.9        44
#7  4     3.4        87
#8  5    12.4        25

dplyr :

library(dplyr)
df %>% group_by(PN) %>% filter(!duplicated(TEST_DAYS))

和數據data.table

library(data.table)
setDT(df)
df[df[,!duplicated(TEST_DAYS), PN]$V1]

暫無
暫無

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

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