小编Kas*_*lma的帖子

如何在R中使用Box-Cox功率变换

我需要将一些数据转换为"正常形状",并且我读到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)

r transformation

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

使用R从文本中删除标点符号

我需要从文本中删除标点符号.我使用的是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

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

R:从Companies House API获取pdf文档

我正在尝试使用R从API中获取文档.在此文章中了解该过程的说明.我一直在按照上述步骤取得部分成功,但仍然无法访问文档内容的最后一步:

  1. 找到您感兴趣的文件归档(例如,为公司制作归档历史请求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)

api r request-headers httr

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

R:for循环创建基于前一列的条件语句填充的新列

我的[简化]数据如下所示:

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)

for-loop if-statement r

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

时间差不均匀的群体的滚动总和

这是对我之前发布的问题的调整.这是我的数据:

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)

r date cumsum dplyr

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

R:计算未来指定时间内特定事件的发生次数

我的简化数据如下所示:

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)

aggregate r date dplyr

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

R:连接到Teradata时JDBC()找不到Java驱动程序路径

我试图通过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 / …

java r jdbc teradata

3
推荐指数
1
解决办法
5259
查看次数

Rcpp 函数在打包时使 RStudio 崩溃

我使用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)

c++ r rcpp rstudio

3
推荐指数
1
解决办法
250
查看次数

使用data.table计算重叠日期的活动天数

我正在尝试解决我在这里发布的问题,使用data.table包或其他有效处理大数据(14-22百万行)的解决方案.有关如何加快此解决方案或找到更快的解决方法的任何提示?

非常感谢你的帮助!

r date lubridate data.table

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

R Markdown:knitr 选项 results='hide' 不起作用

我正在尝试生成一个执行并显示代码但隐藏输出的块代码。我知道,这样做的方法是添加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)

r knitr r-markdown

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