【发布时间】:2015-04-04 21:23:37
【问题描述】:
所以我这里有一个代码:
library(data.table)
setDT(df)[, .SD[which.min(Julian_Day)]., (species,Year)]
df 示例:
df=data.frame(
year=c(1901,1901,1901,1901,1901,1901,1901,1901,1901,1901,1901,1901,1901),
temp=c(29,25,21,26,20,20,26,25,24,23,23,24,26),
habitat=c("fst","fld","city","city","fst","fld","fst","road","river","river","city","city","city"),
species=c("blu","blu","pink","pink","pink","pink","pink","pink","pink","pink","pink","pink","pink"),
day= c(34,87,93,79,56,98,100,187,54,14,63,57,23))
我希望新子集的样子:
dfout <- data.frame(
year=c(1901,1901,1901),
temp=c(29,25,21),
habitat=c("fst","fld","river"),
species=c("blu","blu","pink"),
day=c(34,87,14),
first10= c(NA,NA,23)
)
因此,这个新子集将为我提供一个新行,其中包含每个年份每个物种(我有 1901-2000 年和 100 个物种)观察的前 10%(基于天)的平均温度。从上面可以看出,蓝光物种在 1901 年只有 2 个观测值,因此没有足够的数据来给出前 10% 的平均值,因此返回了 NA。其次,未用于计算前 10% 观测值的观测值从新子集中被省略。如果说,在 1901 年对粉红色物种进行了 30 次观察,那么新子集中将返回 3 行,所有在 first10% 列中的值都相同。
【问题讨论】:
-
我不知道为什么这会引起反对票。如果你们都认为以前有人问过,请指出重复的地方。
-
@Frank 我猜它被否决了,因为该示例不可重现?
-
感谢您发布示例,但您能否对其进行修改,以便将其复制粘贴到 R 控制台中?
-
当然,我只是不确定我需要改变什么。抱歉,我对这一切真的很陌生。
-
好的,我想我修好了!
标签: r group-by data.table