r - 在R中如何计算一个值出现的次数并满足多个条件
问题描述
例子:
Colour vehicle city type
red car London Petrol
blue truck Paris Diesel
red car NewYork Electric
green van Barcelona Petrol
black motorbike LosAngeles Petrol
即如何计算“汽车”出现的次数,它是“红色”和“汽油”
这就是我尝试过的
sum(full_data$vehicle == "car" & full_data$Colour == "red" &
full_data$type == "Petrol")
解决方案
假设full_data
在最后的注释中可重现地显示您的代码对我有用。
# 1
sum(full_data$vehicle == "car" & full_data$Colour == "red" &
full_data$type == "Petrol")
## [1] 1
如果问题是如何改进代码,请尝试with
. 此外,如果数据中有 NA(问题中没有),我们可以通过使用which(...)
围绕逻辑表达式然后使用length
而不是来处理它sum
。
# 2
with(full_data, length(which(vehicle == "car" & Colour == "red" & type == "Petrol")))
## [1] 1
这些中的任何一个也可以工作:
# 3
nrow(subset(full_data, vehicle == "car" & Colour == "red" & type == "Petrol"))
## [1] 1
library(dplyr)
full_data %>%
filter(vehicle == "car" & Colour == "red" & type == "Petrol") %>%
nrow
## [1] 1
# 4
library(sqldf)
sqldf('select count(*) as count from full_data
where vehicle == "car" and Colour == "red" and type == "Petrol"')
## count
## 1 1
笔记
full_data <- structure(list(Colour = c("red", "blue", "red", "green", "black"
), vehicle = c("car", "truck", "car", "van", "motorbike"), city = c("London",
"Paris", "NewYork", "Barcelona", "LosAngeles"), type = c("Petrol",
"Diesel", "Electric", "Petrol", "Petrol")), class = "data.frame", row.names = c(NA,
-5L))
推荐阅读
- c# - 在标记范围和未标记范围内解析组件
- scala - 在使用 Semigroupal 的某些 monad 中,我们仍然会失去上下文吗?
- ruby - 我应该如何在 Ruby 中继承变量?
- sql-server - 使用 DDNS 和端口转发的 Google Apps 脚本 JDBC(特别是 sqlserver)连接问题
- java - 从 servlet 中的单选按钮值获取 null
- r - R语言中两个矩阵相乘的错误
- php - 如何在变体形式下拉列表中显示产品变体图像?
- python - 如何在标头中传递基本身份验证 base 64 密钥
- python-3.x - 如何使用 ReportLab 在 PDF 中定位表格?
- css - 如何在移动横向视图中定位图像