![](/img/trans.png)
[英]How do I use an apply function in R to find the maximum of a variable for subgroups
[英]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.