R找到2组的min x

时间:2017-10-26 15:22:59

标签: r loops data.table which

每个DSSite_Dis中每个SiteID的最低year是多少?

我试过了:

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

但是SiteIDyear的长度不同。

我无法通过在year内迭代SiteID来解决此问题。which.min是一个data.table函数,但很乐意使用其他内容。

如果这是一个简单的循环问题,请道歉。

2 个答案:

答案 0 :(得分:3)

SiteIDyear 不是不同的长度。很可能ds_fish[ , uniqueN(SiteID)]ds_fish[ , uniqueN(year)]不同,但ds_fish属于data.table必须 length(ds_fish$SiteID) == length(ds_fish$year)(反过来两者都等于nrow(ds_fish))的情况。

您提供的代码接近您想要的代码。这就是你想要的:

ds_fish[ , .(min_site_dis = min(DSSite_Dis)), by = .(SiteID, year)]

您所做的就是为每个最小DSSite_Dis返回完整观察 - 这不仅会返回最小DSSite_Dis,还会返回与这些最小值对应的行中剩余的ds_fish列。

您可以咀嚼的概念性说明 - 您在每个DSSite_Dis&#中对每个SiteID的最低year表达了您的意见&#34; 34 ;;您应该说服自己,这与每个 DISSite_Dis 中每个 year 的最低SiteID相同。

答案 1 :(得分:0)

原始代码现在有效。

这里是完整的

button.click()