[英]Select unique entries showing at least one value from another column
我有以下按監測站點和采樣年份組織的水化合物年度平均值數據集(32000 個條目):
data= data.frame(Site_ID=c(1, 1, 1, 2, 2, 2, 3, 3, 3), Year=c(1976, 1977, 1978, 2004, 2005, 2006, 2003, 2004, 2005), AnnualMean=c(1.1, 1.2, 1.1, 2.1, 2.6, 3.1, 2.7, 2.6, 1.9))
Site_ID Year AnnualMean
1 1976 1.1
1 1977 1.2
1 1978 1.1
2 2004 2.1
2 2005 2.6
2 2006 3.1
3 2003 2.7
3 2004 2.6
3 2005 1.9
我想 select 僅來自所有監測站點的數據顯示至少在 2005 年在其時間范圍內進行測量。 使用上述數據集,預期的 output 數據集將是:
Site_ID Year AnnualMean
2 2004 2.1
2 2005 2.6
2 2006 3.1
3 2003 2.7
3 2004 2.6
3 2005 1.9
我是 R 的新手,我一直在處理數據,所以提前謝謝你!
使用dplyr
:
library(dplyr)
data %>%
group_by(Site_ID) %>%
filter(2005 %in% Year)
這是一個基本的 R 解決方案,使用subset
+ ave
dfout <- subset(df,!!ave(Year,Site_ID,FUN = function(x) "2005" %in% x))
這樣
> dfout
Site_ID Year AnnualMean
4 2 2004 2.1
5 2 2005 2.6
6 2 2006 3.1
7 3 2003 2.7
8 3 2004 2.6
9 3 2005 1.9
data.table
的選項
library(data.table)
setDT(data)[, .SD[2005 %in% Year], Site_ID]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.