小编scr*_*Owl的帖子

R regex找到最后出现的分隔符

我试图获得电子邮件地址的结尾(即.net,.com,.edu等),但@之后的部分可以有多个句点.

library(stringi)

strings1 <- c(
    'test@aol.com',
    'test@hotmail.com',
    'test@xyz.rr.edu',
    'test@abc.xx.zz.net'
)

list1 <- stri_split_fixed(strings1, "@", 2)
df1 <- data.frame(do.call(rbind,list1))

    > list2 <- stri_split_fixed(df1$X2, '.(?!.*.)', 2);list2
[[1]]
[1] "aol.com"

[[2]]
[1] "hotmail.com"

[[3]]
[1] "xyz.rr.edu"

[[4]]
[1] "abc.xx.zz.net"
Run Code Online (Sandbox Code Playgroud)

有任何建议可以得到这样的东西:

    X1            X2  X3
1 test       aol.com com
2 test   hotmail.com com
3 test    xyz.rr.edu edu
4 test abc.xx.zz.net net
Run Code Online (Sandbox Code Playgroud)

编辑:另一种尝试:

> list2 <- stri_split_fixed(df1$X2, '\.(?!.*\.)\w+', 2);list2
Error: '\.' is an unrecognized escape in character string starting "'\."
Run Code Online (Sandbox Code Playgroud)

regex string r

3
推荐指数
2
解决办法
4293
查看次数

R删除特殊字符并重复下划线

我有一个包含空格和其他标点字符的数据集.我正在尝试用"_"替换空格和特殊字符.这将创建串成多点"_",所以我想通过使用如描述的以下功能过于删除这些在这里:

removeSpace <- function(x){
    class1 <- class(x)
    x <- as.character(x)
    x <- gsub(" |&|-|/|'|(|)",'_', x) # convert special characters to _
    x <- gsub("([_])\\1+","\\1", x)   # convert multiple _ to single _

    if(class1 == 'character'){
        return(x)
    }
    if(class1 == 'factor'){
        return(as.factor(x))
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是不是删除空格而是替换为"_"而是用"_"代替其他所有字符(即"test" - >"t_e_s_t")

我究竟做错了什么?

regex r

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

如何将回报转换为价格?

我很好奇我如何从日志返回到价格.这是一个例子:

> a1 <- c(88.23, 88.44, 88.55, 88.77, 88.99)
> a1 
[1] 88.23 88.44 88.55 88.77 88.99
> a2 <- diff(log(a1))
> a2 
[1] 0.002377315 0.001243008 0.002481391 0.002475249
Run Code Online (Sandbox Code Playgroud)

a1是价格,a2是退货.我如何从a2回到a1?任何建议都会很棒.

r

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

ROC曲线计算是否可以拆分为并行处理?

在R(或任何其他平台/语言)中,ROC曲线的计算是可以拆分并且并行执行的.我正在做一行150k行,每次使用pROC包计算大约需要5-7分钟.任何其他建议更快的AUC或ROC计算将不胜感激.谢谢.

r

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

R在回归中规范系数

我正在尝试使用线性回归来计算3种模型的最佳权重来预测结果.因此有3个变量(x1, x2, x3)是因变量的预测,y.我的问题是,如何以系数之和为1的约束运行回归.例如:

这很好:

y = .2(x1) + .4(x2) + .4(x3) 
Run Code Online (Sandbox Code Playgroud)

以来 .2 + .4 + .4 = 1

这不好:

y = 1.2(x1) + .4(x2) + .3(x3)
Run Code Online (Sandbox Code Playgroud)

以来 1.2 + .4 + .3 > 1

如果可能的话,我希望在R中这样做.谢谢.如果需要将其移至统计区域("交叉验证"),请告诉我.

编辑:

问题是将每一行分类为1或0. y是来自训练集的实际值(0或1),x1是来自kNN模型的预测值,x2来自randomForest,x3来自gbm模型.我正在尝试为每个模型获得最佳权重,因此每个系数<= 1且系数之和== 1.看起来像这样:

y/Actual value       knnPred      RfPred     gbmPred
      0                .1111       .0546       .03325
      1                .7778       .6245       .60985
      0                .3354       .1293       .33255
      0                .2235       .9987       .10393
      1                .9888       .6753       .88933
     ...                 ...         ...         ...
Run Code Online (Sandbox Code Playgroud)

成功的衡量标准是AUC.所以我试图设置系数以最大化AUC,同时确保它们总和为1.

regression r

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

R包查找错误输入的数据

我正在处理一个在数据中有一些明显错误的数据集(即,1岁以下且信用卡余额为50,000美元的孩子).我不能一行一行地设置为> 100k行.有没有正式的工作如何在数据集中搜索这些类型的明显问题,甚至更好的R中的任何包?或者我应该开始做直方图?

statistics r data-mining outliers

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

R或Java:是否有将邮政编码转换为纬度和经度并放在地图上的包?

是否有任何包或包的组合可以采取邮政编码列表和:

1)将它们转换为纬度和经度

2)将点放在地图上

java r geolocation

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

使用 DISTINCT() 的 MYSQL NOT IN 查询

我有两张桌子。一个是预测列表(又名 PREDS)。另一个是关于预测的汇总统计数据的集合,也称为 STATS。到目前为止,PREDS 有大约 1 毫米的线,但它实际上仅由 30 个不同的模型生成,因此每个模型生成约 3 万个预测。

在 STATS 表中,每一行都是一个模型的汇总统计信息。由于旧模型不再存在,STATS 表中大约有 100 行。我试图找出 PREDS 表中的哪些模型不在 STATS 表中,以便我可以更新它们的汇总统计数据。

我正在尝试这样的东西:

SELECT distinct(t1.modelnum) FROM `PREDS` t1
where t1.modelnum not in (select distinct(modelnum) from `STATS` t2);
Run Code Online (Sandbox Code Playgroud)

但它需要永远运行。我可以快速运行不同的边 ( select distinct(modelnum) from...) 但是当组合在一起时,我似乎做错了什么。

有什么建议?

mysql sql join

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

R选项隐含增量计算

我有一些历史期权价格,我试图确定一个隐含的delta.

我有:

1) strike
2) call/put
3) stock price
4) dividend
5) interest rate
6) option price
Run Code Online (Sandbox Code Playgroud)

我很难在R中找到一个包/函数来做到这一点.

我看过这个fOptions包裹,但似乎没有任何东西可以用来计算隐含的希腊人.

有什么建议?

r options

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

R使用ifelse来改变因子值

我有一个因子变量列.我需要更改因子是某个很少发生的水平的所有细胞的值.我正在使用以下代码但它似乎没有工作:

test2$timeFactor <- ifelse(test2$timeFactor == '94', '-1000', test2$timeFactor)
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

test2$timeFactor <- factor(ifelse(test2$timeFactor == '94', '-1000', test2$timeFactor))
Run Code Online (Sandbox Code Playgroud)

但似乎都不起作用.有什么明显我在这里不见了?

if-statement r

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