小编JD *_*ong的帖子

具有相等轴的散点图

我有一个如下所示的数据集:

DataFrame <- data.frame(x=runif(25),y=runif(25),
                        z=sample(letters[1:4],25,rep=TRUE))
Run Code Online (Sandbox Code Playgroud)

并且使用Lattice软件包,我可以使用以下行创建具有相等轴(使用1:1线穿过中心)的散点图:

xyplot(y ~ x | z, data=DataFrame,
       scales=list(relation="free"),
       prepanel=function(x,y,...) {
         rg <- range(na.omit(c(x,y)))
         list(xlim=rg,ylim=rg)
       },panel=function(x,y,...) {
         panel.abline(0,1)
         panel.xyplot(x,y,...)
       })
Run Code Online (Sandbox Code Playgroud)

在ggplot2中,我已经走到了这一步:

ggplot(data=DataFrame) + geom_point(aes(x=x,y=y)) +
  facet_grid(~z,scales="free") + coord_equal(ratio=1) +
  geom_abline(intercept=0,slope=1)
Run Code Online (Sandbox Code Playgroud)

但我不确定coord_equal()是否是我正在寻找的功能.什么可能是ggplot2中的等效函数调用?

r ggplot2

3
推荐指数
1
解决办法
2306
查看次数

R:nls()公式中的多项式快捷符号

使用线性模型函数lm()多项式公式可以包含如下的快捷符号:

m <- lm(y ~ poly(x,3))
Run Code Online (Sandbox Code Playgroud)

这是一个快捷方式,使用户不必创建x ^ 2和x ^ 3变量或在公式中键入它们I(x^2) + I(x^3).是否有非线性函数的可比表示法nls()

r formula nls lm

3
推荐指数
2
解决办法
1806
查看次数

根据月和日范围选择Pandas DataFrame记录多年

我在Pandas DataFrame中有一些日常数据,它有一个很好的索引.像这样的东西:

import pandas as pd
import numpy as np

rng = pd.date_range('1/1/2010', periods=1000, freq='D')
ts = pd.DataFrame(randn(len(rng)), index=rng, columns=['vals'])
print ts.head()

                vals
2010-01-01  1.098302
2010-01-02 -1.384821
2010-01-03 -0.426329
2010-01-04 -0.587967
2010-01-05 -0.853374
Run Code Online (Sandbox Code Playgroud)

我想将我的DataFrame子集化为仅存在于2月2日和3月3日之间的所有年份的记录.

似乎应该有一种非常像熊猫式的方式来做这件事,但我很难找到它.有帮助吗?

python time-series pandas

3
推荐指数
1
解决办法
3344
查看次数

Java新手无法理解一些"新"语法

我是Java的新手.我用其他语言编程,主要是在需要使用仅作为Java提供的第三方库时使用Java.因此,我对语言只有非常基本的理解.但通常这足以让我的业务完成.

今天我遇到了一个基本的问题,我在谷歌上搜索或查找它时遇到了麻烦.在下面的代码片段中,我根本不理解该new GSRadContext行:

GSRBristowCampbellStrategy algo = new GSRBristowCampbellStrategy();
RadData rd = new RadData();

... 

GSRadContext gsr = new GSRadContext( (IAGSRadStrategy) algo);
gsr.evaluate(rd);
Run Code Online (Sandbox Code Playgroud)

在我有限的Java经验中,我以前从未在new object()调用中看到过这种类型的语法.你能解释一下这个(IAGSRadStrategy)位是怎么回事吗?

感谢您为我的教育做出贡献.

java new-operator

2
推荐指数
1
解决办法
193
查看次数

在`dplyr`数据管道函数中将排序方向传递给`arrange`

我有一个函数用我的数据做了很多事情.但是我想添加一个排序顺序参数,当参数传递给函数时,允许我在相反的方向上一步翻转数据.我需要该函数与SQL后端兼容dbplyr.

我目前的解决方案似乎非常不优雅.我有两个完整的数据管道,一个有a desc(),有一个没有.这感觉真的很笨重,但是因为我不得不desc()在我的领域里徘徊,dplyr我想不出怎么做.一个想法可能是创建一个排序参数,该排序参数在排序之前与我的字段相乘1-1相乘.有更简单或更简单的方法吗?

这是一个简单的玩具示例,展示了我如何创建两个管道:

library(dplyr)

df <- data.frame(x = rnorm(10))

stupid_func <- function(df, sort_order = 'asc'){
  ## does many things in reality, this is a toy example

  if (sort_order == 'asc') {
    df %>% arrange(x) %>% return
  } else if (sort_order == 'desc') {
    df %>% arrange(desc(x)) %>% return
  }

}

stupid_func(df, 'desc')
#>             x
#> 1   1.6680607
#> 2   1.4853252
#> 3   1.1468913
#> 4   1.0447893
#> 5 …
Run Code Online (Sandbox Code Playgroud)

r dplyr dbplyr

2
推荐指数
2
解决办法
115
查看次数

在R中创建等距空间网格

我正在尝试使用R在给定区域上制作等尺寸的正方形网格。我希望我的网格为1km x 1km正方形。我看到这样的示例,它们说明了相等的经/纬网格:

在空间范围内创建规则的多边形网格,旋转给定角度

但这还不算大小。看来我应该能够使用该st_make_grid函数并创建该函数,但是我无法理解如何将网格设置为1km x 1km。

https://r-spatial.github.io/sf/reference/st_make_grid.html

例如,我想从(37,-89.2)开始,到(36.2,-86.8)结束,并创建一个1km x 1km的均匀间隔的网格。我将如何用R做到这一点?

注意:看来棘手的部分是在很大的区域内将网格保持为1km x 1km。我可以以十进制度度保持网格相等的尺寸,但是那不等于地面上的距离。

由于这里有一个巧妙的答案,我已经能够使用PostGIS做到这一点。在PostGIS中,我创建了一个函数:

CREATE OR REPLACE FUNCTION public.makegrid_2d (
  bound_polygon public.geometry,
  width_step integer,
  height_step integer
)
RETURNS public.geometry AS
$body$
DECLARE
  Xmin DOUBLE PRECISION;
  Xmax DOUBLE PRECISION;
  Ymax DOUBLE PRECISION;
  X DOUBLE PRECISION;
  Y DOUBLE PRECISION;
  NextX DOUBLE PRECISION;
  NextY DOUBLE PRECISION;
  CPoint public.geometry;
  sectors public.geometry[];
  i INTEGER;
  SRID INTEGER;
BEGIN
  Xmin := ST_XMin(bound_polygon);
  Xmax := ST_XMax(bound_polygon);
  Ymax := ST_YMax(bound_polygon); …
Run Code Online (Sandbox Code Playgroud)

r spatial

2
推荐指数
1
解决办法
820
查看次数

在R中等效,乘法以相同df的另一列为条件

我试图基于相同data.frame的第三列(id)的值,运行data.frame列与标量A或标量B的简单乘法.不知怎的,我有一些(订单,排序?)问题 - 到目前为止结果肯定是错误的.以下是几次尝试:

mydf$result = subset(mydf,myid==123,multiplyme)*0.6 +
subset(mydf,myid==124,,multiplyme)*0.4
Run Code Online (Sandbox Code Playgroud)

我也尝试在%语法中使用%,但也没有成功.我知道我可以用MySQL作为例子并连接到R,但在这种情况下我只想在这里使用(基本)R或plyr.对于那些比我的blabla更喜欢代码的人来说,这就是我在SQL中如何做到这一点:

SELECT
MIN(CASE WHEN myid=123 THEN multiplyme*0.6 END)
MIN(CASE WHEN myid=124 THEN multiplyme*0.4 END)
FROM mytable
GROUP BY result;
Run Code Online (Sandbox Code Playgroud)

Thx提前提供任何帮助/ R代码建议!请注意,我有2个以上的ID!

r where

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

标签 统计

r ×5

dbplyr ×1

dplyr ×1

formula ×1

ggplot2 ×1

java ×1

lm ×1

new-operator ×1

nls ×1

pandas ×1

python ×1

spatial ×1

time-series ×1

where ×1