小编Nan*_*ncy的帖子

R线性回归公式中的大写字母"I"是什么意思?

我无法找到这个问题的答案,主要是因为使用独立字母(如"我")搜索任何内容都会导致问题.

"I"在这样的模型中做了什么?

data(rock)
lm(area~I(peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)

考虑到以下情况不起作用:

lm(area ~ (peri - mean(peri)), data = rock)
Run Code Online (Sandbox Code Playgroud)

没有问题:

rock$peri - mean(rock$peri)
Run Code Online (Sandbox Code Playgroud)

关于如何自己研究这个问题的任何关键词也会非常有帮助.

regression r formula polynomials

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

从R中的日期中删除年份

我有20年的天气数据,但我只对每年的模式感兴趣.例如,我不关心1995年6月与2011年6月的不同之处.相反,我希望6月1日有20个值,6月2日有20个值,等等.

我的问题:如何删除日期对象的年份部分,保持月份和日期,同时还保持日期的顺序属性?我的最终目标是每个结果变量对应的重复mm/dd值的长列表.我将对待mm/dd之类的因素,但顺序正确.

# Given this:
as.Date(c("2014-06-01","1993-06-01", "2013-06-03", "1999-01-31"), "%Y-%m-%d")
# I want to get this:
"06-01" "06-01" "06-03" "01-31"
# That will sort like this
"01-31" "06-01" "06-01" "06-03"
Run Code Online (Sandbox Code Playgroud)

像使用sub()来删除年份并将短划线转换为小数的小黑客不起作用,因为那个月的第1个月与该月的第10个相同.我还尝试将日期转换为字符串,删除年份,然后将其重新设置为日期......这就是2014年的所有内容.

r date

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

删除ggplot map/choropleth中的边框线

我想删除ggplot中生成的等值区域之间的线.我的问题是由一个非常大的地图(人口普查区块组)的非常大的地图推动的,这些区域如此众多,以至于考虑到边界的密度,不可能看到填充形状的颜色.我在Mac上使用更新的RStudio,ggplot2版本1.0.0; Windows上似乎没有出现同样的问题.

以下是每个县具有不同颜色的示例(使用县),因此不需要边框.第一个使用紫色边框来强调.第二个是color = NA,这是我尝试消除所有边界的失败.

library("ggplot2")
library("maps")
tn = map_data("county", region = "tennessee")
ggplot(tn, aes(x = long, y = lat, group = group)) + 
  geom_polygon(aes(fill = group), color = "purple")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ggplot(tn, aes(x = long, y = lat, group = group)) + 
  geom_polygon(aes(fill = group), color = NA)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

maps r ggplot2

12
推荐指数
3
解决办法
5168
查看次数

更改seaborn图中的x轴刻度数

我希望能够在Python 3.5中控制seaborn图上的轴刻度数.我已经习惯使用R的ggplot了,所以我在Python中使用类似的功能时遇到了一些麻烦.

举个例子,这是我目前正在使用的数据类型:

test = pd.DataFrame()
test["X"] = [1,2,3,1,2,3]
test["Y"] = [1,5,3,7,2,4]
test["Category"] = ["A", "A", "A", "B", "B", "B"]
Run Code Online (Sandbox Code Playgroud)

我想通过这样做来做像ggplot的facet_wrap()这样的事情:

sns.set(style = "ticks", color_codes = True)
test_plot = sns.FacetGrid(test, col = "Category")
test_plot = (test_plot.map(sns.plt.plot, "X", "Y").add_legend())
test_plot.set_xticks(np.arange(1,4,1))
sns.plt.show(test_plot)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误.问题似乎是关于在FacetGrid中设置轴标签,但我不知道如何解决它.这是Python 3的问题还是在刻面图上指定轴?

UserWarning: tight_layout : falling back to Agg renderer
Run Code Online (Sandbox Code Playgroud)

warnings.warn("tight_layout:回退到Agg渲染器")

test_plot.set_xticks(np.arange(1,4,1))
AttributeError: 'FacetGrid' object has no attribute 'set_xticks'
Run Code Online (Sandbox Code Playgroud)

python axes seaborn

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

使用正则表达式在折叠的单词之间插入空格

我正在研究R中的等值线,并且需要能够使用match.map()匹配状态名称.我正在使用的数据集将多个单词的名称粘在一起,如NorthDakota和DistrictOfColumbia.

如何使用正则表达式在低位字母序列之间插入空格?我已成功添加了一个空格,但无法保留指示空间位置的字母.

places = c("NorthDakota", "DistrictOfColumbia")
gsub("[[:lower:]][[:upper:]]", " ", places)
[1] "Nort akota"       "Distric  olumbia"
Run Code Online (Sandbox Code Playgroud)

regex r gsub

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

选择R中最后n列数据帧

有没有办法系统地选择数据框的最后一列?我希望能够将最后一列移动到第一列,但在移动时保持列的顺序.我需要一种方法来做到这一点,它不会列出使用子集的所有列(数据,选择= C(在新秩序中列出的所有列)),因为我将使用许多不同的数据帧.

这是一个示例,我想将最后两列移动到数据框的前面.它有效,但它很难看.

A = rep("A", 5)
B = rep("B", 5)
num1 = c(1:5)
num2 = c(36:40)

mydata2 = data.frame(num1, num2, A, B)

# Move A and B to the front of mydata2
mydata2_move = data.frame(A = mydata2$A, B = mydata2$B, mydata2[,1:    (ncol(mydata2)-2)])

#  A B num1 num2
#1 A B    1   36
#2 A B    2   37
#3 A B    3   38
#4 A B    4   39
#5 A B    5   40
Run Code Online (Sandbox Code Playgroud)

更改原始数据框中的列数会导致问题.这有效(见下文),但命名被抛弃了.为什么这两个例子表现不同?有没有更好的方法来做到这一点,并推广它?

mydata1_move = data.frame(A = …
Run Code Online (Sandbox Code Playgroud)

indexing r dataframe

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

用ggplot在两行之间的阴影区域

我用ggplot生成下面的两行,并且想要遮蔽两行之间的特定区域,即y =x²大于y = 2x,其中2 <= x <= 3.

# create data #

x<-as.data.frame(c(1,2,3,4))
colnames(x)<-"x"
x$twox<-2*x$x
x$x2<-x$x^2

# Set colours #

blue<-rgb(0.8, 0.8, 1, alpha=0.25)
clear<-rgb(1, 0, 0, alpha=0.0001)

# Define region to fill #

x$fill <- "no fill"
x$fill[(x$x2 > x$twox) & (x$x <= 3 & x$x >= 2)] <- "fill"

# Plot #

ggplot(x, aes(x=x, y=twox)) + 
  geom_line(aes(y = twox)) + 
  geom_line(aes(y = x2)) +
  geom_area(aes(fill=fill)) +
  scale_y_continuous(expand = c(0, 0), limits=c(0,20)) +
  scale_x_continuous(expand = c(0, 0), limits=c(0,5)) + …
Run Code Online (Sandbox Code Playgroud)

r fill ggplot2

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

在ggplot2 facet标签中表达

我想expression在一个ggplot2方面标签上有一个R.

假设我正在策划tips data.frame:

library(reshape2)
> head(tips)
  total_bill  tip    sex smoker day   time size
1      16.99 1.01 Female     No Sun Dinner    2
2      10.34 1.66   Male     No Sun Dinner    3
3      21.01 3.50   Male     No Sun Dinner    3
4      23.68 3.31   Male     No Sun Dinner    2
5      24.59 3.61 Female     No Sun Dinner    4
6      25.29 4.71   Male     No Sun Dinner    4
Run Code Online (Sandbox Code Playgroud)

如下:

library(ggplot2)
sp <- ggplot(tips, aes(x=total_bill, y=tip/total_bill)) + 
         geom_point(shape=1) + 
         facet_wrap(~sex, ncol = …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 facet-wrap

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

在knitr中打印动态大小的图表列表

我希望能够在knitr中打印出非预定的情节列表.我能够做到这一点,但也有留下来化解一些皱纹.即:

1)如何在每个绘图之前的每个页面上抑制列表索引(如[[2]])?使用echo = FALSE不会做任何事情.

2)是否可以在渲染时为每个绘图设置大小?我已经尝试在块之外设置一个大小变量,但这只允许我使用一个值而不是每个绘图的不同值.

我问这是一个问题,因为他们似乎在讲同一课,即制作一份情节清单.

一些示例代码:

\documentclass{article}
\usepackage[margin=.5in, landscape]{geometry}
\begin{document}

<<diamond_plots, echo = FALSE, results = 'hide'>>==
library(ggplot2)

diamond_plot = function(data, cut_type){
  ggplot(data, aes(color, fill=cut)) + 
    geom_bar() +
    ggtitle(paste("Cut:", cut_type, sep = ""))
}

cuts = unique(diamonds$cut)
plots = list()
for(i in 1:length(cuts)){
    data = subset(diamonds, cut == cuts[i])
    plots[[i]] = diamond_plot(data, cuts[i])
}
height = 3
@

<<print_plots, results='asis', echo=FALSE,  fig.width=10, fig.height=height>>=
plots
@
\end{document}
Run Code Online (Sandbox Code Playgroud)

这些图的PDF看起来像这样:

在此输入图像描述

r ggplot2 knitr

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

在使用模式融化后,将"变量"列的数字表示转换为原始字符串

我使用patterns()参数data.table::melt()来融合具有几个容易定义的模式的列的数据.它正在工作,但我没有看到我如何创建一个字符索引变量而不是默认的数字细分.

例如,在A中,dog和cat列已编号...请查看"变量"列:

A = data.table(idcol = c(1:5),
            dog_1 = c(1:5),   cat_1 = c(101:105),
            dog_2 = c(6:10),  cat_2 = c(106:110),
            dog_3 = c(11:15), cat_3 = c(111:115))   
head(melt(A, measure = patterns("^dog", "^cat"), value.name = c("dog", "cat")))

   idcol variable dog cat
1:     1        1   1 101
2:     2        1   2 102
3:     3        1   3 103
4:     4        1   4 104
5:     5        1   5 105
6:     1        2   6 106
Run Code Online (Sandbox Code Playgroud)

但是,在B中,dog和cat列用文本编号,但"变量"列仍然是数字.

B = data.table(idcol = c(1:5),
                dog_one = …
Run Code Online (Sandbox Code Playgroud)

r melt data.table

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