假设我做的事情如下:
val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true"))
df.printSchema()
root
|-- year: string (nullable = true)
|-- make: string (nullable = true)
|-- model: string (nullable = true)
|-- comment: string (nullable = true)
|-- blank: string (nullable = true)
df.show()
year make model comment blank
2012 Tesla S No comment
1997 Ford E350 Go get one now th...
Run Code Online (Sandbox Code Playgroud)
但我真的想要yearas Int(并且可能会转换其他一些列).
我能想到的最好的是
df.withColumn("year2", 'year.cast("Int")).select('year2 as 'year, 'make, 'model, 'comment, 'blank)
org.apache.spark.sql.DataFrame = [year: int, …Run Code Online (Sandbox Code Playgroud) 我将以一个例子来说明我的问题.
样本数据:
df <- data.frame(ID = c(1, 1, 2, 2, 3, 5), A = c("foo", "bar", "foo", "foo", "bar", "bar"), B = c(1, 5, 7, 23, 54, 202))
df
ID A B
1 1 foo 1
2 1 bar 5
3 2 foo 7
4 2 foo 23
5 3 bar 54
6 5 bar 202
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过ID总结B的总和以及当A是"foo"时B的总和.我可以通过以下几个步骤完成此操作:
require(magrittr)
require(dplyr)
df1 <- df %>%
group_by(ID) %>%
summarize(sumB = sum(B))
df2 <- df %>%
filter(A == "foo") %>%
group_by(ID) %>%
summarize(sumBfoo = …Run Code Online (Sandbox Code Playgroud) 假设我有一个DataFrame(我从HDFS上的csv读入),我想通过MLlib训练一些算法.如何将行转换为LabeledPoints或以其他方式在此数据集上使用MLlib?
我有一个sf对象,其中包含通过.shp文件获取的都市区域的多边形信息(区域).对于给定的纬度/经度对,我想确定它属于哪个区域.我想我可以利用sf::st_contains()但是我无法以正确的格式获得lat/lon.
例如,我可能想使用以下规则为单元格着色:
(编辑为非平凡)
使用RMarkdown + knitr创建带有条件格式的表格对 我没有帮助,因为我不想只突出满足一组条件的单元格.
示例rmd:
---
title: "Untitled"
output: html_document
---
```{r, message = FALSE, results = "asis"}
library(knitr)
library(dplyr)
head(iris) %>% kable
```
Run Code Online (Sandbox Code Playgroud)
DataTables如果需要,我会采用一种解决方案
要从数据框中选择几列,我可以做
require(dplyr)
require(magrittr)
df <- data.frame(col1=c(1, 2, 3), col2=letters[1:3], col3=LETTERS[4:6])
df %>%
select(col1, col2)
Run Code Online (Sandbox Code Playgroud)
我想写一个类似的函数
f <- function(data, firstCol, secondCol){
data %>%
select(substitute(firstCol), substitute(secondCol))
}
Run Code Online (Sandbox Code Playgroud)
但是跑步f(df, col1, col2)给了我错误
Error in select_vars(names(.data), ..., env = parent.frame()) :
(list) object cannot be coerced to type 'double'
Called from: (function ()
{
.rs.breakOnError(TRUE)
})()
Run Code Online (Sandbox Code Playgroud)
编辑 - 稍微简单的例子:
假设我想做
mtcars %>%
select(cyl, hp) %>%
unique %>%
group_by(cyl) %>%
summarise(avgHP = mean(hp))
Run Code Online (Sandbox Code Playgroud)
但具有不同的数据集和不同的变量名称.我可以重用的代码和替换mtcars,cyl和hp.但我宁愿把它全部包装在一个函数中
下面的可重复示例.每当我包含一个ggvis数字时,我都会在桌面上丢失格式.
---
title: "test"
output: html_document
---
```{r setup, include=FALSE}
library(dplyr)
library(ggvis)
library(knitr)
```
The following table looks fine...
```{r echo=FALSE, results='asis'}
cars %>% kable(format = 'markdown')
```
As long as I don't include this plot below
```{r, echo=FALSE}
pressure %>%
ggvis(x = ~temperature, y = ~pressure) %>%
layer_bars()
```
Run Code Online (Sandbox Code Playgroud) 这是我正在尝试做的一个简单的例子:
iris %>%
mutate(Species2 = ifelse(Species %in% c("setosa", "virginica"), "other", as.character(Species)) %>% as.factor) %>%
str
# 'data.frame': 150 obs. of 6 variables:
# $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
# $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
# $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
# $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 …Run Code Online (Sandbox Code Playgroud) 我做了mtcars %>% by_row(sum)但收到了消息:
by_row()已弃用; 请使用以下组合:tidyr :: nest(); dplyr ::突变(); purrr ::地图()
我天真的做法是这样的
mtcars %>%
group_by(id = row_number()) %>%
nest(-id) %>%
mutate(hi = map_dbl(data, sum))
Run Code Online (Sandbox Code Playgroud)
有没有办法在不创建"id"列的情况下执行此操作?
假设我们有几个向量
a <- c(1, 2, 2, 4, 7)
b <- c(1, 2, 3, 5, 7)
Run Code Online (Sandbox Code Playgroud)
对于我想要的每个元素b[i],b找到的元素数量a少于b[i]或等价,我想知道b_i的等级c(b[i], a).
我可以想到几种天真的方式,例如,做以下任何一种情况length(b):
min_rank(c(b[i], a))
sum(a < b[i])
Run Code Online (Sandbox Code Playgroud)
如果length(a)= length(b)= N,其中N很大,那么最好的方法是什么?
编辑:
为了澄清,我想知道是否有一种计算效率更高的方法来做到这一点,即在这种情况下我是否能比二次时间更好.
矢量化总是很酷;),谢谢@Henrik!
运行时间
a <- rpois(100000, 20)
b <- rpois(100000, 10)
system.time(
result1 <- sapply(b, function(x) sum(a < x))
)
# user system elapsed
# 71.15 0.00 71.16
sw <- proc.time()
bu <- sort(unique(b))
ab <- sort(c(a, bu)) …Run Code Online (Sandbox Code Playgroud)