我需要将一些数据转换为"正常形状",并且我读到Box-Cox可以识别用于转换数据的指数.
对于我的理解
car::boxCoxVariable(y)
Run Code Online (Sandbox Code Playgroud)
用于线性模型中的响应变量,和
MASS::boxcox(object)
Run Code Online (Sandbox Code Playgroud)
对于公式或拟合的模型对象.因此,因为我的数据是数据帧的变量,所以我发现我可以使用的唯一函数是:
car::powerTransform(dataframe$variable, family="bcPower")
Run Code Online (Sandbox Code Playgroud)
那是对的吗?或者我错过了什么?
第二个问题是关于我获得之后要做什么
Estimated transformation parameters
dataframe$variable
0.6394806
Run Code Online (Sandbox Code Playgroud)
我应该简单地将变量乘以这个值吗?我这样做了:
aaa = 0.6394806
dataframe$variable2 = (dataframe$variable)*aaa
Run Code Online (Sandbox Code Playgroud)
然后我运行shapiro-wilks测试的正常性,但我的数据似乎不遵循正态分布:
shapiro.test(dataframe$variable2)
data: dataframe$variable2
W = 0.97508, p-value < 2.2e-16
Run Code Online (Sandbox Code Playgroud) 我需要从文本中删除标点符号.我使用的是tm包,但问题是:
例如:文本是这样的:
data <- "I am a, new comer","to r,"please help","me:out","here"
Run Code Online (Sandbox Code Playgroud)
现在我跑的时候
library(tm)
data<-removePunctuation(data)
Run Code Online (Sandbox Code Playgroud)
在我的代码中,结果是:
I am a new comerto rplease helpmeouthere
Run Code Online (Sandbox Code Playgroud)
但我的期望是:
I am a new comer to r please help me out here
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用R从API中获取文档.在此文章中了解该过程的说明.我一直在按照上述步骤取得部分成功,但仍然无法访问文档内容的最后一步:
- 找到您感兴趣的文件归档(例如,为公司制作归档历史请求1).在"链接"字段中解析对文档链接的响应:{"document_metadata":"链接URI片段在这里"}.
没问题:
library(httr)
library(jsonlite)
library(openssl)
### retrieving filing history ####
company_num = 'FC013908'
key = 'my_key'
fh_path = paste0('/company/', str_to_upper(company_num), "/filing-history")
fh_url <- modify_url("https://api.companieshouse.gov.uk/", path = fh_path)
fh_test <- GET(fh_url, authenticate(key, "")) #status_code = 200
fh_parsed <- jsonlite::fromJSON(content(fh_test, "text",encoding = "utf-8"), flatten = TRUE)
docs <- fh_parsed$items
Run Code Online (Sandbox Code Playgroud)
完成.
2对于给定的文档,通过CH Document API3请求文档元数据.解析响应以获取可用的文档(mime)类型以及指向实际文档数据的链接(文档URI片段).
这里没问题:
md_meta_url = docs$links.document_metadata[1]
key_pass <- paste0(key,":")
decoded_auth <- paste0('Basic ', base64_encode(key_pass))
md_test <- GET(md_meta_url,
add_headers(Authorization = decoded_auth)
)
md_test #status_code = 200!
md_parsed <- jsonlite::fromJSON(content(md_test, …Run Code Online (Sandbox Code Playgroud) 我的[简化]数据如下所示:
id = sample(1:20, 5)
first_active = c(1,1,1,2,3)
week1 = c(1,1,1,0,0)
week2 = c(1,0,0,1,0)
week3 = c(1,0,1,0,1)
week4 = c(1,0,0,0,1)
week5 = c(0,0,0,0,1)
df = data.frame(cbind(id, first_active, week1, week2, week3, week4, week5))
Run Code Online (Sandbox Code Playgroud)
我想创建一个for循环,它将:
i)在相同的data.frame中,创建对应于week1,week2,...列的列p1,p2,...并使用以下内容填充它们:
i)如果相应的周值不为0,则"激活"
ii)如果给定周的值为0,则检查先前的p列状态: if p[i-1] == "active" then "lapsed1"
iii)如果给定周的值为0,则检查先前的p列状态: if p[i-1] == "lapsed[j]" then "lapsed[j+1]"
iv)否则,返回 NA
这将是上述示例的解决方案(使用mutatein dplyr):
df %>%
mutate( p1 = ifelse(week1 != 0, "active", NA),
p2 = ifelse(week2 !=0, "active",
ifelse(p1 == "active", "lapsed1", NA)),
p3 = ifelse(week3 !=0, …Run Code Online (Sandbox Code Playgroud) 这是对我之前发布的问题的调整.这是我的数据:
set.seed(3737)
DF2 = data.frame(user_id = c(rep(27, 7), rep(11, 7)),
date = as.Date(rep(c('2016-01-01', '2016-01-03', '2016-01-05', '2016-01-07', '2016-01-10', '2016-01-14', '2016-01-16'), 2)),
value = round(rnorm(14, 15, 5), 1))
user_id date value
27 2016-01-01 15.0
27 2016-01-03 22.4
27 2016-01-05 13.3
27 2016-01-07 21.9
27 2016-01-10 20.6
27 2016-01-14 18.6
27 2016-01-16 16.4
11 2016-01-01 6.8
11 2016-01-03 21.3
11 2016-01-05 19.8
11 2016-01-07 22.0
11 2016-01-10 19.4
11 2016-01-14 17.5
11 2016-01-16 19.3
Run Code Online (Sandbox Code Playgroud)
这一次,我想计算指定时间段内value每个的累积总和user_id'; 例如,持续7天,14天.理想的解决方案如下所示:
user_id …Run Code Online (Sandbox Code Playgroud) 我的简化数据如下所示:
set.seed(1453); x = sample(0:1, 10, TRUE)
date = c('2016-01-01', '2016-01-05', '2016-01-07', '2016-01-12', '2016-01-16', '2016-01-20',
'2016-01-20', '2016-01-25', '2016-01-26', '2016-01-31')
df = data.frame(x, date = as.Date(date))
df
x date
1 2016-01-01
0 2016-01-05
1 2016-01-07
0 2016-01-12
0 2016-01-16
1 2016-01-20
1 2016-01-20
0 2016-01-25
0 2016-01-26
1 2016-01-31
Run Code Online (Sandbox Code Playgroud)
我想计算x == 1在指定时间段内出现的次数,例如距离当前日期的14天和30天(但不包括当前条目,如果是的话x == 1.所需的输出如下所示:
solution
x date x_plus14 x_plus30
1 2016-01-01 1 3
0 2016-01-05 1 4
1 2016-01-07 2 3
0 2016-01-12 2 3
0 2016-01-16 …Run Code Online (Sandbox Code Playgroud) 我试图通过RStudio连接到Teradata,但是由于某种原因,JDBC函数在识别Java驱动程序所在的路径时遇到了问题。请参见下面的代码:
library(RODBC)
library(RJDBC)
library(rJava)
# both Java drivers definitely exist
file.exists('/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar')
[1] TRUE
file.exists('/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar')
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
但是当我将这些路径粘贴到JDBC调用中时...
# allow more elaborated error messages to appear
.jclassLoader()$setDebug(1L)
drv = JDBC("com.teradata.jdbc.TeraDriver","/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar;/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar")
Run Code Online (Sandbox Code Playgroud)
...我收到以下错误:
RJavaClassLoader:将'/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/tdgssconfig.jar;/Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar'添加到URL类路径加载器中警告:路径' / Users / KULMAK / Documents / TeraJDBC__indep_indep.16.10.00.03 / tdgssconfig.jar; /Users/KULMAK/Documents/TeraJDBC__indep_indep.16.10.00.03/terajdbc4.jar'不存在,它将不会添加到内部类路径中!RJavaClassLoader:已添加 将'/Library/Frameworks/R.framework/Versions/3.4/Resources/library/RJDBC/java/RJDBC.jar'到URL类路径加载器RJavaClassLoader:添加Java存档文件'/Library/Frameworks/R.framework/Versions/ 3.4 / Resources / library / RJDBC / java / RJDBC.jar到内部类路径RJavaClassLoader@3d4eac69.findClass(com.teradata.jdbc.TeraDriver)-URL加载器找不到它:java.lang.ClassNotFoundException:com.teradata .jdbc.TeraDriver RJavaClassLoader.findClass(“ com.teradata.jdbc.TeraDriver”)-尝试使用类路径“ /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/java”目录,可以获取'/ Library / Frameworks / R.framework / Versions / 3.4 / Resources / library / rJava / java / com / teradata / …
我使用Rcpp.package.skeleton(myPackage)单个函数构建了一个虚拟 Rcpp 包:
// [[Rcpp::export]]
double triple_balance(const double& balance) {
if(R_IsNA(balance)) {
stop("balance is NA, please provide a numeric value");
} else {
double result = balance*3;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
在单元测试中,我想确保函数在传递错误输入时返回错误,如果我提供它,它会始终如一:
Rcpp::sourceCpp('src/triple_balance.cpp')
triple_balance("10")
Run Code Online (Sandbox Code Playgroud)
三重平衡(“10”)中的错误:与请求的类型不兼容:[type=character; 目标=双]。
但是,如果我安装并重新启动包,运行triple_balance("10")RStudio 会崩溃。我应该补充一点,崩溃不会每次都发生,它似乎取决于库的初始状态,例如我之前是否安装了以前版本的包,例如const在函数定义中有或没有。
什么可以解释这种不一致的行为?
我的sessionInfo:
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server 7.8 (Maipo)
Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成一个执行并显示代码但隐藏输出的块代码。我知道,这样做的方法是添加echo = T, results = 'hide'在knitr块的选项,建议在这里。但是,就我而言,这仍然会产生输出,为什么?
我的会话信息:
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.4.3 backports_1.1.2 rprojroot_1.3-2 htmltools_0.3.6
[5] tools_3.4.3 yaml_2.2.0 Rcpp_0.12.19 rmarkdown_1.10
[9] knitr_1.20 digest_0.6.18 evaluate_0.12
Run Code Online (Sandbox Code Playgroud)