假设我有一个数据框,如下所示:
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))
)
Run Code Online (Sandbox Code Playgroud)
通过"统计",我想创建三个新列,一个显示一个编号职级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)
))
Run Code Online (Sandbox Code Playgroud)
您还可以使用新mutate功能来避免重新计算列:
ddply(df, .(stat), mutate,
y1rank = rank(y1),
y2rank = rank(y2),
change = y2rank - y1rank
)
Run Code Online (Sandbox Code Playgroud)