我想使用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) 我怀疑这个问题可能是重复的,但是,我发现没有什么令人满意的。想象一个具有如下结构的简单数据集:
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) 如果我向ì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) 我有一个sf对象,其中包含通过.shp文件获取的都市区域的多边形信息(区域).对于给定的纬度/经度对,我想确定它属于哪个区域.我想我可以利用sf::st_contains()但是我无法以正确的格式获得lat/lon.
我知道这是一个重复的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的解决方案.谢谢!
我正在运行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) … 我有一个数据框,其中包含var1.mean,var2.mean形式的多列.我想从包含它的所有列中删除后缀".mean".我尝试在管道中使用rename_all和regex,但无法提供正确的语法.有什么建议?
我正在解析大量的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()的消息中格式化或放置换行符,以便我可以看到它是如何检测问题的? …
我正在尝试编写一个函数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) 我有以下数据集(示例):
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)
使用地图并提出一些建议,我试图使用: …