我知道R和我是Fidelity股票交易的重要用户.我想知道是否有一些R powerusers能够找到一个拥有API的代理,并且有一些示例R代码可以开始.任何经纪人都很好,任何费用都很好 - 我只想知道它是否可能.(即使我需要支付沉重的月费或其他费用)
dplyr是唯一能够处理我的843k data.frame并以快速方式查询它的软件包.我可以使用一些数学和相同的标准来过滤,但是我需要实现搜索概念.
我需要类似这个sqldf查询的东西
library(sqldf)
head(iris)
sqldf("select * from iris where lower(Species) like '%nica%'")
Run Code Online (Sandbox Code Playgroud)
在dplyr的帮助下,我无法找到如何做到这一点.就像是:
filter(iris,Species like '%something%')
Run Code Online (Sandbox Code Playgroud)
起点和终点%非常重要.另请注意,数据帧有800 + k行,因此传统的R函数可能运行缓慢.它必须是一个基于dplyr的解决方案.
从下面的字符串中提取字符串“(procedure)”-或括号内的一般文本的正确正则表达式是什么
输入字符串示例是
使用 flutemetamol (18F) 的正电子发射断层扫描和大脑计算机断层扫描(程序)
另一个例子
尿路感染预防(程序)
可能的方法是:
转到文本的末尾,并查找第一个左括号并将子集从该位置到文本的末尾
从文本的开头,确定最后一个 '(' 字符并执行该位置以作为子字符串结束
其他字符串可以(提取不同的“标签”)
[1] "Xanthoma of eyelid (disorder)" "Ventricular tachyarrhythmia (disorder)"
[3] "Abnormal urine odor (finding)" "Coloboma of iris (disorder)"
[5] "Macroencephaly (disorder)" "Right main coronary artery thrombosis (disorder)"
Run Code Online (Sandbox Code Playgroud)
(寻求通用正则表达式)(或 R 中的解决方案更好)
dplyr很快,我想使用%.%管道很多.我想使用表函数(按频率计算)并保留列名,输出为data.frame.
如何仅使用dplyr函数实现与下面的代码相同(想象具有6M行的巨大data.table(BIGiris))
> out<-as.data.frame(table(iris$Species))
> names(out)[1]<-'Species'
> names(out)[2]<-'my_cnt1'
> out
Run Code Online (Sandbox Code Playgroud)
输出就是这个.请注意,我必须重命名第1列.另外,在dplyr mutate或其他调用中 - 我想以某种方式指定新计数列的名称.
Species my_cnt1
1 setosa 50
2 versicolor 50
3 virginica 50
Run Code Online (Sandbox Code Playgroud)
想象加入这样的表(假设虹膜data.frame有6M行),物种更像是"species_ID"
> habitat<-data.frame(Species=c('setosa'),lives_in='sea')
Run Code Online (Sandbox Code Playgroud)
最后的连接和输出(为了加入,我需要一直保留列名)
> left_join(out,habitat)
Joining by: "Species"
Species my_cnt1 lives_in
1 setosa 50 sea
2 versicolor 50 <NA>
3 virginica 50 <NA>
>
Run Code Online (Sandbox Code Playgroud) dplyr 是一个很棒的包,我尝试在我的代码中一致地使用它。它生成非常可读的代码。
select(3,4) 函数允许我选择第三列和第四列。
我想在排列()方法中使用相同的方法。在 SQL 中,按数字或名称可以互换使用。(这很棒)
不幸的是,我只能使用 dplyr::arrange() 的名称
如果我知道我需要按第三列订购(安排),是否有可以使用的代码模式。在我的代码中,该列的名称将会更改,但我始终需要按第三列排序。(位置不会)
请参阅这里的问题:
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet …Run Code Online (Sandbox Code Playgroud) Readr 是一个很棒的软件包。但人们懒于指定每一列的数据类型。(例如,满分 30 分)。
检查解析失败可能会发现只有一列是关键问题。
请看下面
fname='c:/q/net/SnomedCT_RF2Release_INT_20160131/Full/Terminology/sct2_Concept_Full_INT_20160131.txt'
> snm<-read_delim(fname,delim='\t')
Warning: 4016 parsing failures.
row col expected actual
528950 id an integer 11000119105
528951 id an integer 11000119105
528952 id an integer 41000119109
528953 id an integer 61000119108
528954 id an integer 81000119104
...... ... .......... ...........
.See problems(...) for more details.
> probs<-problems(snm)
> table(probs$col)
id
4016
>
Run Code Online (Sandbox Code Playgroud)
如何指定数据集中一列(在本例中为列 id)的数据类型。(成为角色)
names(snm)
[1] "id" "effectiveTime" "active" "moduleId" "definitionStatusId"
Run Code Online (Sandbox Code Playgroud) 20MB+ 的 CSV 文件发送电子邮件是不礼貌的。用户如何用最少的代码压缩文件?
非压缩任务是:
mtcars %>% write_csv('foocars.csv')
Run Code Online (Sandbox Code Playgroud)
read_csv 可以很好地查看扩展并进行解压缩。什么是最简单的方法(不正确的代码)
mtcars %>% write_csv('foocars.csv.zip')
mtcars %>% write_csv('foocars.csv',zipIt=T)
Run Code Online (Sandbox Code Playgroud)
请不要使用 linux tar 或 gz。它必须是为了赢得用户。
假设用户尝试将数字(出生年份)转换为日期。
select year_of_birth, cast(year_of_birth as date) from visit_occurrence
Run Code Online (Sandbox Code Playgroud)
并得到这个错误:
cannot cast type smallint to date
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法?例如, cast(cast(YOB as string)+'-01-01' as date) 也不起作用。
假设用户想要在某个行号之后对7行进行子集化.
输出应该是这个
iris[4:10,]
Run Code Online (Sandbox Code Playgroud)
但是子集化是基于变量begin_row完成的
begin_row=4
iris[begin_row:begin_row+6,]
#iris[c(begin_row:begin_row+6),] also this does not work
Run Code Online (Sandbox Code Playgroud)
为什么输出不是7行作为所需的输出?它是如何正确完成的.
我习惯于在SQL中枚举字符串的可能性。
像这样的东西:
select * from s1b where Phases in ('Phase 2', 'Phase 3','Phase 4', 'Phase 2|Phase 3')
Run Code Online (Sandbox Code Playgroud)
我无法使用sqldf,因为我的data.frame具有posix日期,而这些日期会被损坏。因此,我必须使用本机R方法。
如何在没有复杂的OR代码的情况下将data.frame列与一组多个字符串进行比较
s1btest<-subset(s1b,s1b$Phases=='Phase 2'|s1b$Phases=='Phase 3'| more conditions here)
Run Code Online (Sandbox Code Playgroud) Pipes和dplyr对于快速数据探索很有用。有人认为,在一揽子计划中,使用它们并不理想。
在一个包中,我必须首先将一个包添加到依赖项。像这样devtools::use_package("dplyr")
而且,当我使用任何函数时,都必须在其前面加上dplyr :::。如何为管道操作员做到这一点?我说:magrittr::%>%?
理想情况下,我将在程序包中使用如下代码:
data %<>% group_by(a,b,c) %>% summarize(total=sum(d)) %>% ungroup()
Run Code Online (Sandbox Code Playgroud)
我是否必须总是说
data magrittr::%<>% dplyr::group_by(a,b,c) magrittr::%>% dplyr::summarize(total=sum(d)) %>% ungroup()
Run Code Online (Sandbox Code Playgroud)
R包中管道和dplyr的最佳实践是什么?