簡體   English   中英

Select 唯一條目顯示來自另一列的至少一個值

[英]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.

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