Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R按2组求最小x_R_Loops_Data.table - Fatal编程技术网

R按2组求最小x

R按2组求最小x,r,loops,data.table,R,Loops,Data.table,每个年度内每个站点ID的最小DSSite\u Dis是多少 我试过: ds_DT <- ds_fish[ , .SD[which.min(DSSite_Dis)], by = c("SiteID", "year")] ds_DTSiteID和year的长度没有区别。很可能,ds\u fish[,uniqueN(SiteID)]与ds\u fish[,uniqueN(year)]不同,但由于ds\u fish是一种数据。表,必须是长度(ds\u fi

每个
年度内每个
站点ID
的最小
DSSite\u Dis
是多少

我试过:

ds_DT <- ds_fish[ , .SD[which.min(DSSite_Dis)], by = c("SiteID", "year")]

ds_DT
SiteID
year
的长度没有区别。很可能,
ds\u fish[,uniqueN(SiteID)]
ds\u fish[,uniqueN(year)]
不同,但由于
ds\u fish
是一种
数据。表
,必须是
长度(ds\u fish$SiteID)=长度(ds\u fish$year)
(反过来,两者都等于
nrow(ds\u fish)

您提供的代码与您想要的非常接近。以下是您想要的:

ds_fish[ , .(min_site_dis = min(DSSite_Dis)), by = .(SiteID, year)]
您所做的是返回每个最小值
DSSite\u Dis
的完整观察值——这将不仅返回最小值
DSSite\u Dis
,还返回与这些最小值对应的行中剩余列的值


一个供您仔细思考的概念性说明——您将您所追求的措辞为“每个
站点ID在每个
年度内的最小
DSSite\u Dis
”;您应该说服自己,这与每个
SiteID
SiteID
year
中每个
year
的最小
Dis
长度相同。很可能,
ds\u fish[,uniqueN(SiteID)]
ds\u fish[,uniqueN(year)]
不同,但由于
ds\u fish
是一种
数据。表
,必须是
长度(ds\u fish$SiteID)=长度(ds\u fish$year)
(反过来,两者都等于
nrow(ds\u fish)

您提供的代码与您想要的非常接近。以下是您想要的:

ds_fish[ , .(min_site_dis = min(DSSite_Dis)), by = .(SiteID, year)]
您所做的是返回每个最小值
DSSite\u Dis
的完整观察值——这将不仅返回最小值
DSSite\u Dis
,还返回与这些最小值对应的行中剩余列的值


一个供您仔细思考的概念性说明——您将您所追求的措辞为“每个
站点ID在每个
年度内的最小
DSSite\u Dis
”;您应该说服自己,这与每个
SiteID
原始代码中每个
年份的最低
Dis
相同

这是全部的

library(foreign)
library(data.table)

file <- 'DownstreamSites.dbf' # ds_fish dbf
ds_fish <- read.dbf(file, as.is = FALSE)
file <- 'UpstreamSites.dbf' # nearest_us_fish dbf
us_fish <- read.dbf(file, as.is = FALSE)
file <- 'barriers.dbf' # barriers dbf
barriers <- read.dbf(file, as.is = FALSE)
file <- 'metrics.dbf' # barriers dbf
metrics <- read.dbf(file, as.is = FALSE)
metrics <- metrics[c(-1:-3,-8:-34,-41,-42,-45:-47,-49:-52)]

colnames(metrics)[13] <- "DSSite_ID"
ds_fish1 <- merge(metrics, ds_fish, by = 'DSSite_ID')
colnames(metrics)[13] <- "USSite_ID"
us_fish1 <- merge(metrics, us_fish, by = 'USSite_ID')

year <- format(as.Date(us_fish1$event_date, format="%d/%m/%Y"),"%Y")
us_fish1$year <- year
year <- format(as.Date(ds_fish1$event_date, format="%d/%m/%Y"),"%Y")
ds_fish1$year <- year

ds_fish2 <- data.table(ds_fish1)
us_fish2 <- data.table(us_fish1)

ds_DT <- ds_fish2[ , .SD[which.min(DSSite_Dis)], by = c("SiteID", "year")]
us_DT <- us_fish2[ , .SD[which.min(USSite_Dis)], by = c("SiteID", "year")]
库(外文)
库(数据表)

文件原始代码现在可以工作了

这是全部的

library(foreign)
library(data.table)

file <- 'DownstreamSites.dbf' # ds_fish dbf
ds_fish <- read.dbf(file, as.is = FALSE)
file <- 'UpstreamSites.dbf' # nearest_us_fish dbf
us_fish <- read.dbf(file, as.is = FALSE)
file <- 'barriers.dbf' # barriers dbf
barriers <- read.dbf(file, as.is = FALSE)
file <- 'metrics.dbf' # barriers dbf
metrics <- read.dbf(file, as.is = FALSE)
metrics <- metrics[c(-1:-3,-8:-34,-41,-42,-45:-47,-49:-52)]

colnames(metrics)[13] <- "DSSite_ID"
ds_fish1 <- merge(metrics, ds_fish, by = 'DSSite_ID')
colnames(metrics)[13] <- "USSite_ID"
us_fish1 <- merge(metrics, us_fish, by = 'USSite_ID')

year <- format(as.Date(us_fish1$event_date, format="%d/%m/%Y"),"%Y")
us_fish1$year <- year
year <- format(as.Date(ds_fish1$event_date, format="%d/%m/%Y"),"%Y")
ds_fish1$year <- year

ds_fish2 <- data.table(ds_fish1)
us_fish2 <- data.table(us_fish1)

ds_DT <- ds_fish2[ , .SD[which.min(DSSite_Dis)], by = c("SiteID", "year")]
us_DT <- us_fish2[ , .SD[which.min(USSite_Dis)], by = c("SiteID", "year")]
库(外文)
库(数据表)
您应该为该输入提供样本输入和所需输出,以便测试和验证可能的解决方案。您应该为该输入提供样本输入和所需输出,以便测试和验证可能的解决方案。