假设我有一个数据帧,像这样:
df <- data.frame(
variable = rep(letters[1:10], 2),
y2 = 1:10,
y1 = c(10, 9, 8 ,7, 6, 5, 4, 2, 1, 3),
stat = c(rep(letters[1], 10), rep(letters[2], 10))
)
通过“stat”,我想创建三个新列,一个显示y1
和y2
的排名,另一个计算y1
和y2
之间排名的变化(简称年份1和年份2)。
我一直在尝试使用ddply
,但似乎无法实现我的要求。以下是我尝试过的示例(也许可以说明我所尝试的内容):
ddply(df, .(stat), function(x) data.frame(
df,
y1rank = rank(x$x),
y2rank = rank(x$y),
change = rank(x$y) - rank(x$x)
))