【发布时间】:2016-10-31 13:30:18
【问题描述】:
这是一个示例数据框。
df = data.frame(company = c('a', 'b', 'c', 'd'),
bond = c(0.2, 1, 0.3, 0),
equity = c(0.7, 0, 0.5, 1),
cash = c(0.1, 0, 0.2, 0))
df
company bond equity cash
1 a 0.2 0.7 0.1
2 b 1.0 0.0 0.0
3 c 0.3 0.5 0.2
4 d 0.0 1.0 0.0
我需要找到在任何列中都有 1.0 的公司。 预期结果应该是 b 和 d。
请提供适用于 >20 列的解决方案。
df %>% filter(bond == 1) 之类的解决方案仅适用于搜索特定列。
dplyr 或 data.table 解决方案是可以接受的。
谢谢。
【问题讨论】:
-
用浮点数检查相等性是一个容易出错的事情,仅供参考。尝试查看
x = (.1+.2)*(10/3),然后测试x==1... -
Fwiw,这里有一些关于这个问题的变体:stackoverflow.com/q/28233561 和 stackoverflow.com/q/25692392
标签: r dataframe data.table dplyr