【发布时间】:2016-07-21 00:39:55
【问题描述】:
我有一个像这样的数据框:
Symbol Yield PE Growth
1 ABBV 3.46 18.80 5.00
2 ABM 2.24 21.18 3.33
3 ABT 2.26 23.65 10.85
4 ADM 1.91 22.29 9.08
5 ADP 2.46 25.83 8.57
6 AFL 2.25 9.26 5.97
7 ALB 1.44 13.53 13.15
8 ANDE 1.02 19.59 5.74
9 AOS 1.29 25.11 9.99
10 APD 2.41 25.08 2.53
11 ARLP 5.50 11.69 1.99
12 AROW 3.83 14.68 1.01
13 ARTNA 3.67 23.91 3.20
14 ATNI 1.68 3.14 7.50
15 ATO 2.97 18.59 1.72
还有一长串布尔过滤条件,例如
conditions = c('Symbol in `ABM', 'Growth > 1.2', 'Yield within (2 3)', 'PE>3',....)
有没有办法使用 base R 或 dplyr 我可以做类似的事情
for (condition in conditions) {
cond = expression(condition)
dataframe = dataframe[which(cond),]}
以便我可以不断添加到条件列表中,而不是手动粘贴它们并在索引中使用多个 &'s?
输出应该是
filter(dataframe, Symbol in 'ABM' & Growth > 1.2 & Yield within (2 3) & PE>3 &...)
【问题讨论】:
-
您的预期输出是什么?条件是一个一个评估还是一起评估?
-
我正在尝试将它们全部一起完成(多个和。)
-
conditions = c('Symbol %in% "ABM"', 'Growth > 1.2', 'Yield %in% c(2,3)', 'PE>3')可能更接近你想要的。