我有一个如下所示的数据集:
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中的等效函数调用?
使用线性模型函数lm()多项式公式可以包含如下的快捷符号:
m <- lm(y ~ poly(x,3))
Run Code Online (Sandbox Code Playgroud)
这是一个快捷方式,使用户不必创建x ^ 2和x ^ 3变量或在公式中键入它们I(x^2) + I(x^3).是否有非线性函数的可比表示法nls()?
我在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日之间的所有年份的记录.
似乎应该有一种非常像熊猫式的方式来做这件事,但我很难找到它.有帮助吗?
我是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)位是怎么回事吗?
感谢您为我的教育做出贡献.
我有一个函数用我的数据做了很多事情.但是我想添加一个排序顺序参数,当参数传递给函数时,允许我在相反的方向上一步翻转数据.我需要该函数与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在给定区域上制作等尺寸的正方形网格。我希望我的网格为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) 我试图基于相同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!