如何使用以下方法计算每组的累积总和DataFrame abstraction; 在PySpark?
使用示例数据集如下:
df = sqlContext.createDataFrame( [(1,2,"a"),(3,2,"a"),(1,3,"b"),(2,2,"a"),(2,3,"b")],
["time", "value", "class"] )
+----+-----+-----+
|time|value|class|
+----+-----+-----+
| 1| 2| a|
| 3| 2| a|
| 1| 3| b|
| 2| 2| a|
| 2| 3| b|
+----+-----+-----+
Run Code Online (Sandbox Code Playgroud)
我想value为class(有序)time变量添加每个分组的累积和列.
我已将鼠标悬停事件附加到SVG元素中的元素(例如,圆圈).我还需要一个与SVG元素/"背景"本身相关联的"mousemove"事件处理程序.然而,它们似乎存在冲突:当鼠标悬停在圆圈上时,附加到圆圈的处理程序不会取代与SVG元素本身相关联的处理程序.
如何让圆圈的鼠标悬停取代SVG元素的事件处理程序?我需要它们两个,但只希望鼠标悬停在圆圈上触发,鼠标移动由SVG元素中任何其他位置的移动触发.
在这个JSFiddle中可以看到一个简单的例子:http://jsfiddle.net/aD8x2/(下面是JS代码).如果您单击一个圆圈(开始一条线),然后将鼠标悬停在另一个圆圈上,您将看到与鼠标悬停在圆圈上时触发的两个事件相关联的颜色闪烁.
var svg = d3.select("div#design")
.append("svg")
.attr("width", "500").attr("height", "500");
svg.selectAll("circle").data([100, 300]).enter().append("circle")
.attr("cx", function(d) { return d; })
.attr("cy", function(d) { return d; })
.attr("r", 30)
.on("mouseover", function () {
d3.select(this).attr("fill", "red");
})
.on("mouseout", function() {
d3.select(this).attr("fill", "black");
})
.on("click", function() {
svg.append("line")
.attr(
{
"x1": d3.select(this).attr("cx"),
"y1": d3.select(this).attr("cy"),
"x2": d3.select(this).attr("cx"),
"y2": d3.select(this).attr("cy")
})
.style("stroke-width", "10")
.style("stroke", "rgb(255,0,0)");
});
svg.on("mousemove", function() {
var m = d3.mouse(this);
svg.selectAll("line")
.attr("x2", m[0])
.attr("y2", m[1]);
});
Run Code Online (Sandbox Code Playgroud) 如何按频率对因子值列重新排序 - 按升序排列?
虽然forcats包提供了一种基于其频率(fct_infreq())重新排序因子的明确方法,但它在降低频率顺序时这样做.我需要因子频率/计数的相反顺序.
例如
library(forcats)
set.seed(555)
df <- data.frame(x=factor(sample(as.character(1:10), 100, replace=TRUE)))
table(df$x)
1 10 2 3 4 5 6 7 8 9
9 10 12 14 10 10 5 12 8 10
levels(fct_infreq(df$x))
[1] "3" "2" "7" "10" "4" "5" "9" "1" "8" "6"
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来翻转排序,以便最不频繁的因素("6")是第一个,最频繁的("3")是最后的?