小编OTS*_*ats的帖子

修复ggplot中facet的顺序

数据:

type    size    amount  
T   50%     48.4    
F   50%     48.1    
P   50%     46.8    
T   100%    25.9    
F   100%    26.0    
P   100%    24.9    
T   150%    21.1    
F   150%    21.4    
P   150%    20.1    
T   200%    20.8    
F   200%    21.5    
P   200%    16.5
Run Code Online (Sandbox Code Playgroud)

我需要使用ggplot(x轴 - >"type",y轴 - >"amount",group by"size")绘制上述数据的条形图.当我使用下面的代码时,我没有按照数据中显示的顺序获得变量"type"和"size".请看图.我已经使用了以下代码.

 ggplot(temp, aes(type, amount , fill=type, group=type, shape=type, facets=size)) + 
  geom_bar(width=0.5, position = position_dodge(width=0.6)) + 
  facet_grid(.~size) + 
  theme_bw() + 
  scale_fill_manual(values = c("darkblue","steelblue1","steelblue4"), 
                    labels = c("T", "F", "P"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 .

为了解决订单问题,我使用了以下的变量"type"的因子方法.请看图.

temp$new = factor(temp$type, levels=c("T","F","P"), labels=c("T","F","P")) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,现在我不知道如何修改变量"size"的顺序.它应该是50%,100%.150%和200%.

r sequence facet ggplot2

68
推荐指数
5
解决办法
7万
查看次数

R中的“达到经过的时间限制”错误

我在R中不断收到“达到已用时间限制”错误。我正在使用Studio。

这是我要运行的代码,是ggplot中的一个简单图形:

require(ggplot2)
docgraph <- ggplot(data = plotnvto, aes(calluna, doc)) + 
  geom_point(aes(x = calluna, y = doc, color = "calluna"), size = 3) + 
  geom_point(aes(x = sedge, y = doc, colour = "sedge"), size = 3) +
  geom_smooth(aes(calluna,doc), method=lm, se=FALSE, color = "purple") +
  geom_smooth(aes(sedge,doc), method=lm, se=FALSE, color = "green") +
  scale_colour_manual("", 
                      values = c("calluna"="purple", "sedge"="green")) +
  labs(x= "Percent Cover", y= "DOC (mg/L)") +
  annotate(geom="text", x=10, y=36, label="y = -0.4498x + 26.6843
R² = 0.1836, p = 0.1646",color="purple") +
  annotate(geom="text", …
Run Code Online (Sandbox Code Playgroud)

r

14
推荐指数
3
解决办法
7906
查看次数

pivot_longer 成多列

尝试使用 pivot_longer。我不知道如何使用“names_sep”或“names_pattern”来解决这个问题。

dat <- tribble(
     ~group,  ~BP,  ~HS,  ~BB, ~lowerBP, ~upperBP, ~lowerHS, ~upperHS, ~lowerBB, ~upperBB,
        "1", 0.51, 0.15, 0.05,     0.16,     0.18,      0.5,     0.52,     0.14,     0.16,
      "2.1", 0.67, 0.09, 0.06,     0.09,     0.11,     0.66,     0.68,     0.08,      0.1,
      "2.2", 0.36, 0.13, 0.07,     0.12,     0.15,     0.34,     0.38,     0.12,     0.14,
      "2.3", 0.09, 0.17, 0.09,     0.13,     0.16,     0.08,     0.11,     0.15,     0.18,
      "2.4", 0.68, 0.12, 0.07,     0.12,     0.14,     0.66,     0.69,     0.11,     0.13,
        "3", 0.53, 0.15, 0.06,     0.14,     0.16,     0.52,     0.53,     0.15,     0.16)
Run Code Online (Sandbox Code Playgroud)

所需的输出(宽数据的第一行)

group names   values lower …
Run Code Online (Sandbox Code Playgroud)

pivot r tidyverse

13
推荐指数
4
解决办法
5892
查看次数

在多列上过滤基于NA的数据帧

我有以下数据框让我们称之为df

id   type   company
1    NA      NA
2    NA      ADM
3    North   Alex
4    South   NA
NA   North   BDA
6    NA      CA
Run Code Online (Sandbox Code Playgroud)

我想只保留"类型"和"公司"栏中没有NA的记录

id   type   company
3    North   Alex
NA   North   BDA
Run Code Online (Sandbox Code Playgroud)

我累了

 df_non_na <- df[!is.na(df$company) || !is.na(df$type), ]
Run Code Online (Sandbox Code Playgroud)

但这没效果.

提前致谢

r dataframe

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

使用 dplyr::group_by() 对每个组进行 loess 回归

好吧,我挥舞着我的白旗。

我正在尝试对我的数据集计算 loess 回归。

我希望 loess 计算一组不同的点,这些点绘制为每个组的平滑线。

问题是 loess 计算是在逃避dplyr::group_by函数,所以 loess 回归是在整个数据集上计算的。

互联网搜索让我相信这是因为dplyr::group_by不应该以这种方式工作。

我只是不知道如何在每个组的基础上进行这项工作。

以下是我尝试失败的一些示例。

test2 <- test %>% 
  group_by(CpG) %>% 
  dplyr::arrange(AVGMOrder) %>% 
  do(broom::tidy(predict(loess(Meth ~ AVGMOrder, span = .85, data=.))))

> test2
# A tibble: 136 x 2
# Groups:   CpG [4]
   CpG            x
   <chr>      <dbl>
 1 cg01003813 0.781
 2 cg01003813 0.793
 3 cg01003813 0.805
 4 cg01003813 0.816
 5 cg01003813 0.829
 6 cg01003813 0.841
 7 cg01003813 0.854
 8 cg01003813 0.866
 9 cg01003813 0.878
10 cg01003813 0.893 …
Run Code Online (Sandbox Code Playgroud)

r loess dplyr broom purrr

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

如何将向量中的值与r之前和之后的值进行匹配?

我试图根据矢量中焦点值之前或之后的一个元素值来识别不匹配的值.有什么想过怎么办?

让我们说,我有一个向量:x<-c(1,1,2,1,3,3).如果element[i]与item i(element[i-1]element[i+1])之前或之后的元素匹配.如果匹配element[i]应该等于"是",否则它应该等于"否".

预期的输出x<-c(1,1,2,1,3,3)应该是c("yes","yes","no","no","yes","yes").

r

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

使用 R Lubridate 提取会计年度

我会创建几个日期。

library(lubridate)
x <- ymd(c("2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31"))
Run Code Online (Sandbox Code Playgroud)

我可以从这些x值中提取年份和季度。

quarter(x, with_year = TRUE, fiscal_start = 10)

[1] 2012.2 2012.3 2012.4 2013.1

但我似乎不能提取财政年度。这行不通,但什么会呢?

year(x, with_year = TRUE, fiscal_start = 10)

我收到以下错误消息:

年份错误(x,with_year = TRUE,Financial_start = 10):未使用的参数(with_year = TRUE,Financial_start = 10)

r lubridate

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

`geom_histogram`和`stat_bin()`不对齐

构造直方图后,我想在绘图中添加上边界/轮廓。我不想使用,geom_bar或者geom_col因为我不想每个容器的垂直边界。
我的尝试包括使用geom_histogramstat_bin(geom = "bin"),但是垃圾箱无法对齐。

我每个GEOM(内调整参数binsbinwidthcenterboundary),并一直无法对齐这些分布。关于SO也有类似的问题(在geom_histogram或stat_bin上覆盖geom_points),但似乎没有一个类似的问题可以挖掘或提供解决方案。

这是我的几何图层不对齐的情况:

set.seed(2019)
library(ggplot2)
library(ggthemes)
df <- data.frame(x = rnorm(100), 
                 y = rep(c("a", "b"), 50))

p <- df %>% 
    ggplot(aes(x, fill = y)) + 
    geom_histogram() + 
    facet_wrap(vars(y)) + 
    theme_fivethirtyeight() + 
    guides(fill = F)
Run Code Online (Sandbox Code Playgroud)

这是图p,我的基本直方图: 在此处输入图片说明

p + stat_bin(geom = "step")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我希望这两个几何图形对齐。我已经测试了各种虚拟数据,但这仍然是一个问题。这些几何体为什么不自然对齐?如何调整这些层中的任何一层以对齐?有没有比结合直方图和统计盒更好的替代方法来实现我想要的图了?

r ggplot2

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

错误:只能将字符串转换为符号

我不太精通 R,但最近安装了 ggpubr 包,因为想要制作成对的箱线图。我试过一直在使用:

ggpaired(question1, cond1 = question1$q1, cond2 = question1$q2,
     fill = "condition", palette = "jco")
Run Code Online (Sandbox Code Playgroud)

我不断出现错误消息:

错误:只能将字符串转换为符号

并且系统提示我运行最后一次错误检查。输出如下:

Only strings can be converted to symbols
Backtrace:
  1. ggpubr::ggpaired(...)
 10. tidyr::gather_(...)
 12. rlang::syms(gather_cols)
 13. rlang:::map(x, sym)
 14. base::lapply(.x, .f, ...)
 15. rlang:::FUN(X[[i]], ...)
Run Code Online (Sandbox Code Playgroud)

有人可以请帮助我!!非常感谢!

r ggplot2 ggpubr

5
推荐指数
0
解决办法
3489
查看次数

使用JDBC连接R和Teradata

我正在尝试使用RJDBC连接R和Teradata.

我发现这个链接有一个使用mysql的例子,但我不知道如何用teradata做同样的事情.

library(RJDBC)
drv <- JDBC("com.mysql.jdbc.Driver",
           "/etc/jdbc/mysql-connector-java-3.1.14-bin.jar",
           identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://localhost/test", "user", "pwd")
Run Code Online (Sandbox Code Playgroud)

我已经下载了这个驱动程序:http: //downloads.teradata.com/download/connectivity/jdbc-driver 但是我不确定我应该在哪里引用该目录.

我知道有一个teradataR包在那里,但我不知道它是否真的使用R 3.0.0工作.

目前我只是将数据从数据库中拉出来很有意思.简单的事情SELECT * FROM table.问题是RODBC很慢......

还有其他选择来完成这项任务吗?

r teradata rodbc rjdbc

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

标签 统计

r ×10

ggplot2 ×3

broom ×1

dataframe ×1

dplyr ×1

facet ×1

ggpubr ×1

loess ×1

lubridate ×1

pivot ×1

purrr ×1

rjdbc ×1

rodbc ×1

sequence ×1

teradata ×1

tidyverse ×1