小编phi*_*sch的帖子

根据列中的其他值填写NA值

我有一个data.table,有大量的缺失值.我想通过在data.table中的可用值中添加或减去值来填充这些值.特别要考虑这些数据:

> test = data.table(id=c("A","A","A","A","A","B","B","B","B","B"), x=c(NA,NA,0,NA,NA,NA,NA,0,NA,NA))
> test
    id  x
 1:  A NA
 2:  A NA
 3:  A  0
 4:  A NA
 5:  A NA
 6:  B NA
 7:  B NA
 8:  B  0
 9:  B NA
10:  B NA
Run Code Online (Sandbox Code Playgroud)

我需要一个操作,将其转换为:

    id  x
1:  A -2
2:  A -1
3:  A  0
4:  A  1
5:  A  2
6:  B -2
7:  B -1
8:  B  0
9:  B  1
10: B  2
Run Code Online (Sandbox Code Playgroud)

基本上是na.locf的一个版本,它增加最后一个值而不是重复它.

r time-series missing-data data.table

7
推荐指数
1
解决办法
189
查看次数

R线图中点的排序

我想在散点图中添加一个二次拟合的拟合线,但点的排序在某种程度上搞砸了.

attach(mtcars)
plot(hp, mpg)
fit <- lm(mpg ~ hp + I(hp^2))
summary(fit)
res <- data.frame(cbind(mpg, fitted(fit), hp))
with(res, plot(hp, mpg))
with(res, lines(hp, V2))
Run Code Online (Sandbox Code Playgroud)

这样可以在整个地方绘制线条,而不是通过散点图进行渲染.我确信这很简单,但我有点难过.

在此输入图像描述

plot regression r points

6
推荐指数
1
解决办法
6777
查看次数

R中的三元热图

我试图想出一种使用R绘制三元热图的方法.我认为ggtern应该可以解决这个问题,但我不知道如何在vanilla ggplot2中执行像stat_bin这样的分箱功能.这是我到目前为止所拥有的:

require(ggplot2)
require(ggtern)
require(MASS) 
require(scales)

palette <- c( "#FF9933", "#002C54", "#3375B2", "#CCDDEC", "#BFBFBF", "#000000")

sig <- matrix(c(1,2,3,4),2,2)
data <- data.frame(mvrnorm(n=10000, rep(2, 2), Sigma))
data$X1 <- data$X1/max(data$X1)
data$X2 <- data$X2/max(data$X2)
data$X1[which(data$X1<0)] <- runif(length(data$X1[which(data$X1<0)]))
data$X2[which(data$X2<0)] <- runif(length(data$X2[which(data$X2<0)]))

##  Print 2d heatmap
ggplot(data, aes(x=X1, y=X2)) + 
    stat_bin2d(bins=50) + 
    scale_fill_gradient2(low=palette[4], mid=palette[3], high=palette[2]) +
    xlab("Percentage x") +
    ylab("Percentage y") +
    scale_y_continuous(labels = percent) +
    scale_x_continuous(labels = percent) +
    theme_bw() + theme(text = element_text(size = 15))

data$X3 <- with(data, 1-X1-X2)
data <- data[data$X3 >= 0,] …
Run Code Online (Sandbox Code Playgroud)

r ternary heatmap binning ggtern

6
推荐指数
1
解决办法
1955
查看次数

从Spark/pyspark连接到PostgreSQL

我已经在Windows机器上安装了Spark,并希望通过Spyder使用它.经过一些故障排除后,基础知识似乎有效:

import os

os.environ["SPARK_HOME"] = "D:\Analytics\Spark\spark-1.4.0-bin-hadoop2.6"

from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext

spark_config = SparkConf().setMaster("local[8]")
sc = SparkContext(conf=spark_config) 
sqlContext = SQLContext(sc)

textFile = sc.textFile("D:\\Analytics\\Spark\\spark-1.4.0-bin-hadoop2.6\\README.md")
textFile.count()
textFile.filter(lambda line: "Spark" in line).count()

sc.stop()
Run Code Online (Sandbox Code Playgroud)

这按预期运行.我现在想要连接到在同一服务器上运行的Postgres9.3数据库.我从这里下载JDBC驱动程序在这里,并把它放在文件夹d:\分析\星火\ spark_jars.然后我创建了一个包含以下行的新文件D:\ Analytics\Spark\spark-1.4.0-bin-hadoop2.6\conf\spark-defaults.conf:

spark.driver.extraClassPath        'D:\\Analytics\\Spark\\spark_jars\\postgresql-9.3-1103.jdbc41.jar'
Run Code Online (Sandbox Code Playgroud)

我运行了以下代码来测试连接

import os

os.environ["SPARK_HOME"] = "D:\Analytics\Spark\spark-1.4.0-bin-hadoop2.6"

from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext

spark_config = SparkConf().setMaster("local[8]")
sc = SparkContext(conf=spark_config) 
sqlContext = SQLContext(sc)

df = (sqlContext
    .load(source="jdbc",
          url="jdbc:postgresql://[hostname]/[database]?user=[username]&password=[password]",
          dbtable="pubs")
 )
sc.stop()
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Py4JJavaError: An error occurred while calling …
Run Code Online (Sandbox Code Playgroud)

postgresql jar jdbc apache-spark pyspark

6
推荐指数
1
解决办法
6414
查看次数