【发布时间】:2015-02-07 22:02:48
【问题描述】:
DF:
年份 1901 1901 1903 1968 1978 2002 2006 2010
物种 1 1 2 65 1 82 3 1
纬度:49 46 47 47 48 43.1 44.23 47.11
长:-79.22 -79.5 -78.22 -79.84 -78.11 -77.114 -76.33 -76.2
朱利安日:79 125 165 178 193 68 90 230
土地:16 24 25 30 34 34 39 41
还有更多变量,但这是矩阵的一个示例。我只想保留每年的行以及对于 Julian_day 具有最低值的每个物种。即:此处将省略第二行,因为 1901 年物种 1 的 79 小于 125。
【问题讨论】:
-
你能提供你想要的输出吗?
-
这可能是我们可以提供帮助的data.frame?结构(列表(年 = c(1901、1901、1903、1968、1978、2002、2006、2010),物种 = c(1、1、2、65、1、82、3、1),纬度 = c( 49, 46, 47, 47, 48, 43.1, 44.23, 47.11), long = c(79.22, -79.5, -78.22, -79.84, -78.11, -77.114, -76.33, -76.2), Julian_Day = c(79 , 125, 165, 178, 193, 68, 90, 230), Land = c(16, 24, 25, 30, 34, 34, 39, 41)), .Names = c("年份", "物种" , "lat", "long", "Julian_Day", "Land"), row.names = c(NA, -8L), class= "data.frame")
-
从这个例子中,我的实际数据集包含 ~120,000 行和 15 列,我想要:年份物种 lat long Julian _Day Land 1901 1 49 -79.22 79 16 1903 2 47 -78.22 165 25等等......基本上输出看起来与原始数据相同,除了我会丢失第二行数据(第二个 1901 年),因为我只想要那一年的儒略日(该物种的第一次出现)的最小值。
-
DJJ,我不确定你是否建议我制作一个数据框,但我正在处理从 excel 导入的大量数据,只是想消除这些行不符合我的条件。我只想保留有关每个年份每个物种的最小儒略日值信息的行。
-
试试
library(data.table); setDT(df)[ ,.SD[which.min(Julian_Day)], Year]
标签: r conditional subset