R-按组查找公共元素
我正在使用以下数据集R-按组查找公共元素,r,data.table,R,Data.table,我正在使用以下数据集 library(data.table) dat <- fread("https://www.dropbox.com/s/kj66h9shv6zge91/mydat.csv?dl=1") 对于每个变量id,我试图找到源id中同时存在于实验id所有元素中的元素列表(例如,“历史”、“ssp126”、“ssp245”、“ssp370”、“ssp585”) 有什么办法去那里吗?看起来是一个简单的问题,但我在上找不到合适的答案,因此无法使用字符而不是数字值
library(data.table)
dat <- fread("https://www.dropbox.com/s/kj66h9shv6zge91/mydat.csv?dl=1")
对于每个变量id
,我试图找到源id
中同时存在于实验id
所有元素中的元素列表(例如,“历史”、“ssp126”、“ssp245”、“ssp370”、“ssp585”)
有什么办法去那里吗?看起来是一个简单的问题,但我在上找不到合适的答案,因此无法使用字符而不是数字值。也许这会有帮助:
by(dat, dat$variable_id, function(x)
Reduce(intersect, split(x$source_id, x$experiment_id)))
#dat$variable_id: pr
# [1] "BCC-CSM2-MR" "MRI-ESM2-0" "CESM2-WACCM" "INM-CM5-0" "INM-CM4-8"
# [6] "MPI-ESM1-2-HR" "CMCC-CM2-SR5" "NorESM2-MM" "EC-Earth3" "EC-Earth3-Veg"
#[11] "GFDL-ESM4"
#--------------------------------------------------------------------------
#dat$variable_id: tas
# [1] "BCC-CSM2-MR" "MRI-ESM2-0" "CESM2-WACCM" "AWI-CM-1-1-MR" "INM-CM4-8"
# [6] "INM-CM5-0" "MPI-ESM1-2-HR" "CMCC-CM2-SR5" "NorESM2-MM" "EC-Earth3"
#[11] "EC-Earth3-Veg" "GFDL-ESM4"
#--------------------------------------------------------------------------
#dat$variable_id: tasmax
# [1] "BCC-CSM2-MR" "MRI-ESM2-0" "AWI-CM-1-1-MR" "INM-CM4-8" "INM-CM5-0"
# [6] "MPI-ESM1-2-HR" "NorESM2-MM" "EC-Earth3" "EC-Earth3-Veg" "GFDL-ESM4"
#--------------------------------------------------------------------------
#dat$variable_id: tasmin
# [1] "BCC-CSM2-MR" "MRI-ESM2-0" "AWI-CM-1-1-MR" "INM-CM4-8" "INM-CM5-0"
# [6] "MPI-ESM1-2-HR" "NorESM2-MM" "EC-Earth3" "EC-Earth3-Veg" "GFDL-ESM4"
对于每个变量_id
这将返回所有实验_id
中存在的公共源_id
如果您想为每个
变量\u id
和每个实验\u id
Reduce(intersect, split(dat$source_id, list(dat$variable_id, dat$experiment_id)))
#[1] "BCC-CSM2-MR" "MRI-ESM2-0" "INM-CM5-0" "INM-CM4-8"
#[5] "MPI-ESM1-2-HR" "NorESM2-MM" "EC-Earth3" "EC-Earth3-Veg"
#[9] "GFDL-ESM4"
太棒了,这正是我们想要的!
Reduce(intersect, split(dat$source_id, list(dat$variable_id, dat$experiment_id)))
#[1] "BCC-CSM2-MR" "MRI-ESM2-0" "INM-CM5-0" "INM-CM4-8"
#[5] "MPI-ESM1-2-HR" "NorESM2-MM" "EC-Earth3" "EC-Earth3-Veg"
#[9] "GFDL-ESM4"