hel*_*n.h 27 r date duplicate-removal
这是我的数据集的一个例子;
Date Time(GMT)Depth Temp Salinity Density Phosphate
24/06/2002 1000 1 33.855 0.01
24/06/2002 1000 45 33.827 0.01
01/07/2002 1000 10 13.26 33.104 24.873 0.06
01/07/2002 1000 30 12.01 33.787 25.646 0.13
08/07/2002 1000 5 13.34 33.609 25.248 0.01
08/07/2002 1000 40 12.01 34.258 26.011 1.33
15/07/2002 1000 30 12.04 34.507 26.199 0.01
22/07/2002 1000 5 13.93 33.792 25.269 0.01
22/07/2002 1000 30 11.9 34.438 26.172 0.08
29/07/2002 1000 5 13.23 34.09 25.642 0.01
Run Code Online (Sandbox Code Playgroud)
我想删除重复的行,这样我每个日期只有一行,我想根据深度做这个,我想保持最深(最深)的行.有任何想法吗?
vra*_*js5 47
假设您有df中的数据
df = df[order(df[,'Date'],-df[,'Depth']),]
df = df[!duplicated(df$Date),]
Run Code Online (Sandbox Code Playgroud)
这是在单个 dplyr 调用中执行此操作的一种方法:
# Remove any duplicates
df <- df %>%
arrange(Date, -Depth) %>%
filter(duplicated(Date) == FALSE)
Run Code Online (Sandbox Code Playgroud)
您也可以使用 dplyrarrange()
代替 order(我发现它更直观):
df <- arrange(df, Date, -Depth)
df <- df[!duplicated(df$Date),]
Run Code Online (Sandbox Code Playgroud)
介绍一种data.table
解决方案,这将是解决此问题的最快方法(假设data
是您的数据集)
library(data.table)
unique(setDT(data)[order(Date, -Depth)], by = "Date")
Run Code Online (Sandbox Code Playgroud)
只是另一种方式:
setDT(data)[data[, .I[which.max(Depth)], by=Date]$V1]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36513 次 |
最近记录: |