标签: tidyverse

在rsample中结合滚动原点预测重采样和组V形交叉验证

我想使用R包rsample来生成我的数据的重采样.

该软件包提供了rolling_origin生成重采样的功能,以保持数据的时间序列结构.这意味着训练数据(在被调用的包中analysis)总是在测试数据(assessment)的过去.

另一方面,我想执行数据的块样本.这意味着在采样期间将行组保持在一起.这可以使用该功能完成group_vfold_cv.人们可以想到的是几个月.比如说,我们希望时间序列交叉验证始终保持数月.

有没有办法将这两种方法结合起来rsample

我自己给出每个程序的例子:

## generate some data
library(tidyverse)
library(lubridate)
library(rsample)
my_dates = seq(as.Date("2018/1/1"), as.Date("2018/8/20"), "days")
some_data = data_frame(dates = my_dates) 
some_data$values = runif(length(my_dates))
some_data = some_data %>% mutate(month = as.factor(month(dates))) 
Run Code Online (Sandbox Code Playgroud)

这给出了以下形式的数据

 A tibble: 232 x 3
   dates      values month 
   <date>      <dbl> <fctr>
 1 2018-01-01 0.235  1     
 2 2018-01-02 0.363  1     
 3 2018-01-03 0.146  1     
 4 2018-01-04 0.668  1     
 5 2018-01-05 0.0995 1     
 6 2018-01-06 0.163  1 …
Run Code Online (Sandbox Code Playgroud)

r machine-learning r-caret tidyverse

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

通过仅更改 mutate() 中的一个自变量来拟合多个回归模型

我怀疑这个问题可能是重复的,但是,我发现没有什么令人满意的。想象一个具有如下结构的简单数据集:

set.seed(123)
df <- data.frame(cov_a = rbinom(100, 1, prob = 0.5),
                 cov_b = rbinom(100, 1, prob = 0.5),
                 cont_a  = runif(100),
                 cont_b = runif(100),
                 dep = runif(100))

    cov_a cov_b      cont_a      cont_b          dep
1       0     1 0.238726027 0.784575267 0.9860542973
2       1     0 0.962358936 0.009429905 0.1370674714
3       0     0 0.601365726 0.779065883 0.9053095817
4       1     1 0.515029727 0.729390652 0.5763018376
5       1     0 0.402573342 0.630131853 0.3954488591
6       0     1 0.880246541 0.480910830 0.4498024841
7       1     1 0.364091865 0.156636851 0.7065019011
8       1     1 0.288239281 0.008215520 0.0825027458 …
Run Code Online (Sandbox Code Playgroud)

regression r dplyr tidyverse

11
推荐指数
3
解决办法
389
查看次数

使用dplyr和add_row()在每个组中添加行

如果我向ìris数据集添加一个新行:

iris <- as_tibble(iris)

> iris %>% 
    add_row(.before=0)

# A tibble: 151 × 5
    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
          <dbl>       <dbl>        <dbl>       <dbl>   <chr>
1            NA          NA           NA          NA    <NA> <--- Good!
2           5.1         3.5          1.4         0.2  setosa
3           4.9         3.0          1.4         0.2  setosa
Run Code Online (Sandbox Code Playgroud)

有用.那么,为什么我不能在每个"子集"的顶部添加一个新行:

iris %>% 
 group_by(Species) %>% 
 add_row(.before=0)

Error: is.data.frame(df) is not TRUE
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse

10
推荐指数
3
解决办法
6656
查看次数

如何通过sf找到一个点属于哪个多边形

我有一个sf对象,其中包含通过.shp文件获取的都市区域的多边形信息(区域).对于给定的纬度/经度对,我想确定它属于哪个区域.我想我可以利用sf::st_contains()但是我无法以正确的格式获得lat/lon.

gis r r-sp tidyverse r-sf

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

合并包含NA的数据框中的行以生成完整的行

我知道这是一个重复的Q但我似乎无法再找到这个帖子

使用以下数据

df <- data.frame(A=c(1,1,2,2),B=c(NA,2,NA,4),C=c(3,NA,NA,5),D=c(NA,2,3,NA),E=c(5,NA,NA,4))

  A  B  C  D  E
  1 NA  3 NA  5
  1  2 NA  2 NA
  2 NA NA  3 NA
  2  4  5 NA  4
Run Code Online (Sandbox Code Playgroud)

分组A,我想使用tidyverse解决方案的以下输出

  A  B  C  D  E
  1  2  3  2  5
  2  4  5  3  4
Run Code Online (Sandbox Code Playgroud)

我有很多小组A.我想我看到了一个答案,coalesce但我不确定如何让它发挥作用.我想要一个同样适用characters解决方案.谢谢!

r coalesce tidyverse

10
推荐指数
3
解决办法
2699
查看次数

如何在Ubuntu 16.04和17.04上安装Tidyverse

我正在运行Ubuntu 16.04 [现在是17.04:参见下面的粗体注释]和R 3.4.1.我今天早上安装了后者,所以我认为这是最新版本.我想安装Tidyverse,我在Windows下度过了很多欢乐时光.但是当我这样做时install.packages("tidyverse"),我得到了关于gcc无法识别的命令行选项的错误.当安装命中颜色空间和munsell包时,这些开始.我将在这篇文章的最后给出一个例子,仅供munsell使用.

我没有在Ubuntu 16.04上找到其他任何人确切存在这个问题的人.但来自有类似问题的人的帖子表明我的gcc可能是一个太旧的版本,无法识别选项-fstack-protector-strong和-Wdate-time.

我想到的可能的解决方法:

1)将Ubuntu更新为16.10或17.04,希望其中一个具有合适的gcc.但是,我在这里缺乏Ubuntu的专业知识:特别是,似乎我必须升级两次,一次升级到16.10再升级到17.04.我甚至无法将系统升级到16.10:https ://wiki.ubuntu.com/YakketyYak/ReleaseNotes ,"从Ubuntu 16.04 LTS升级"中建议的步骤,在我尝试时找不到升级.另外,我不确定这些Ubuntus中是否有正确的gcc.

第二天添加:虽然我尝试通过https://wiki.ubuntu.com/YakketyYak/ReleaseNotes升级Ubuntu 昨天没有做任何事情,但他们今天确实工作了.也许是一个缓存问题?所以我现在有Ubuntu 17.04.但是,在尝试安装Tidyverse时,我仍然会遇到相同的错误.

2)找到不需要那些编译器选项的旧版Tidyverse.

3)升级我的Ubuntu的gcc.但是我不知道是否会在我的机器上使用其他需要较旧gcc的软件.

4)为Tidyverse安装一个新的gcc,并以某种方式使用路径来欺骗安装程序调用它,可能遵循https://askubuntu.com/questions/466651/how-do-i-use-the中的建议-latest-gcc-on-ubuntu.但这听起来很危险.

5)废弃Ubuntu并在Windows上完成我的所有工作.我知道人们会嘲笑"Micro $ oft",但至少在Windows上,我不会浪费一个早晨的Linux arcana并且可以完成我的工作,这就是R.这种感觉太过于像牧师在https中的咒语://people.dsv.su.se/~jpalme/s1/hoare.pdf, "软件设计:一个寓言".只是说......

来自使用这些版本的R和Ubuntu实际执行此操作的人的任何建议?

这是一个失败的安装:

`> install.packages("munsell")
Installing package into ‘/home/popx/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
also installing the dependency ‘colorspace’

trying URL 'https://cran.rstudio.com/src/contrib/colorspace_1.3-2.tar.gz'
Content type 'application/x-gzip' length 293433 bytes (286 KB)
==================================================
downloaded 286 KB

trying URL 'https://cran.rstudio.com/src/contrib/munsell_0.4.3.tar.gz'
Content type 'application/x-gzip' length 97244 bytes (94 KB) …

r tidyverse

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

使用rename_all从列名中删除后缀?

我有一个数据框,其中包含var1.mean,var2.mean形式的多列.我想从包含它的所有列中删除后缀".mean".我尝试在管道中使用rename_all和regex,但无法提供正确的语法.有什么建议?

r tidyverse

10
推荐指数
4
解决办法
5131
查看次数

read_csv()解析错误信息,如何解释?

我正在解析大量的csv数据.数据相当"脏",因为我有不一致的分隔符,虚假字符和格式问题导致read_csv()出现问题.

然而,我的问题不是数据的肮脏,而只是试图理解read_csv()给我的解析错误.如果我能更好地理解错误消息,那么我可以做一些清洁工作来解决脚本问题.数据的大小使得手动方法难以处理.

这是一个最小的例子.假设我有一个像这样的csv文件:

"col_a","col_b","col_c"
"1","a quick","10"
"2","a quick "brown" fox","20"
"3","quick, brown fox","30"
Run Code Online (Sandbox Code Playgroud)

请注意,第二行的"棕色"周围有虚假引号.此内容将进入名为" my_data.csv " 的文件中.

当我尝试读取该文件时,我得到一些解析失败.

> library(tidyverse)
> df <- read_csv("./my_data.csv", col_types = cols(.default = "c"))
Warning: 2 parsing failures.
row # A tibble: 2 x 5 col     row   col           expected actual            file expected   <int> <chr>              <chr>  <chr>           <chr> actual 1     2 col_b delimiter or quote      b './my_data.csv' file 2     2 col_b delimiter or quote        './my_data.csv'
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,解析失败并非"非常印刷".这是一长271个字符.

我无法弄清楚甚至在故障消息中放置换行符以查看问题所在以及消息试图告诉我的内容.而且,它指的是"2x5 tibble".什么呀?我的数据框是3x3.

有人可以告诉我如何在read_csv()的消息中格式化或放置换行符,以便我可以看到它是如何检测问题的? …

csv parsing r readr tidyverse

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

如何将一个不带引号的列名列表送入`lapply`(以便我可以使用`dplyr`函数)

我正在尝试编写一个函数tidyverse/dplyr,我想最终使用lapply(或map).(我一直在努力回答这个问题,但发现了一个有趣的结果/死胡同.请不要将其标记为重复 - 这个问题是你在那里看到的答案的延伸/背离.)

是否有
1)获取引用变量列表以在dplyr函数内工作
(并且不使用已弃用的SE_函数)的方法, 或者是
2)某种方式通过一个lapply或多个方式提供一个未加引号的字符串列表map

我使用Programming in Dplyr小插图来构建我认为最符合当前使用NSE标准的功能.

样本数据:

sample_data <- 
    read.table(text = "REVENUEID AMOUNT  YEAR REPORT_CODE PAYMENT_METHOD INBOUND_CHANNEL  AMOUNT_CAT
               1 rev-24985629     30  FY18           S          Check            Mail     25,50
               2 rev-22812413      1  FY16           Q          Other      Canvassing   0.01,10
               3 rev-23508794    100  FY17           Q    Credit_card             Web   100,250
               4 rev-23506121    300  FY17           S    Credit_card            Mail   250,500
               5 rev-23550444    100  FY17           S    Credit_card             Web   100,250
               6 rev-21508672 …
Run Code Online (Sandbox Code Playgroud)

r dplyr lazyeval tidyverse rlang

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

如何使用purrr循环整理eval函数?

我有以下数据集(示例):

train <- data.frame(ps_ind_06_bin = c(FALSE, FALSE, FALSE, TRUE, TRUE, FALSE),
                        ps_ind_07_bin = c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE),
                        ps_ind_08_bin = c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE),
                        ps_ind_09_log = c(1, 3, 4, 2, 3, 2))
Run Code Online (Sandbox Code Playgroud)

我有以下函数显示group_by()操作的ggplot :

get_charts1 <- function(mygroup){
  quo_var <- enquo(mygroup)
  train %>% 
    group_by(!!quo_var) %>% 
    count() %>%
    ungroup() %>%
  ggplot(aes_q(x = quo_var, y = quote(n), fill = quo_var)) + 
    geom_col() +
    theme(legend.position = "none")
    }
Run Code Online (Sandbox Code Playgroud)

我手动输入列名称时工作正常,例如:

get_charts1(ps_ind_07_bin)
Run Code Online (Sandbox Code Playgroud)

但是,我想在几个列上使用该函数,我将它放在一个向量上:

binarias <- train %>% 
             select(ends_with("bin")) %>% 
             colnames()
Run Code Online (Sandbox Code Playgroud)

使用地图并提出一些建议,我试图使用: …

r ggplot2 purrr tidyverse tidyeval

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

标签 统计

r ×10

tidyverse ×10

dplyr ×3

coalesce ×1

csv ×1

ggplot2 ×1

gis ×1

lazyeval ×1

machine-learning ×1

parsing ×1

purrr ×1

r-caret ×1

r-sf ×1

r-sp ×1

readr ×1

regression ×1

rlang ×1

tidyeval ×1