【发布时间】:2010-07-31 00:15:04
【问题描述】:
假设我有一个像这样的 data.frame:
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame(x=x,y=rnorm(100))
并且我想为 x (1:10) 的每个值标记在第 80 个百分位数中排序(降序)的值。我可以获取分位数并对数据进行排序,而不会出现这样的问题:
df <- ddply(df, .(x), subset, y > quantile(y,0.8))
df <- df[with(df, order(x,-y)),]
现在,我怎样才能让 ddply 在 data.frame 的每个排序子集的新列中添加一列标签 (1,2,3,...n)?我现在可以通过计算 nrow(df["x"]) 来使用 for 循环来做到这一点,但这似乎缺乏任何口才。
注意:这个问题是由Creating multiple subsets all in one data.frame (possibly with ddply) 建立并与之相关的
【问题讨论】:
-
对不起,我不完全理解标签应该是什么。我也不确定向量上的 nrow() 是如何工作的。
-
没关系,看到哈德利的回应
标签: r