我在尝试创建一个新变量时收到此Error in mutate_impl(.data, dots) : Evaluation error: lengths of 'breaks' and 'labels' differ.
错误,该变量指示空气质量指数在超过100天内是否大于50。基本上,我想创建一个“是”或“否”和标签。
我观看了一段关于cut()功能的YouTube视频。我尝试了一些break参数的不同变体。我觉得好像很接近,但我不明白这个错误。中断应该从最小值开始并以100结束。任何超过100到最大值都应该得到“是”
答案 0 :(得分:0)
您应该使用cut
使用mutate_at
功能。示例数据的示例如下。
计数已减少到4
,以将样本数据中的标签视为“是”。在实际实现中,它可以保持为100。
df <- read.table(text = "AQI Date.Local year Latitude Longitude City.Name State.Name
38 01-01 2005 30.5 -87.9 Fairhope Alabama
56 01-04 2005 30.5 -87.9 Fairhope Alabama
30 01-07 2005 30.5 -87.9 Fairhope Alabama
36 01-10 2005 30.5 -87.9 Fairhope Alabama
14 01-13 2005 30.5 -87.9 Fairhope Alabama
32 01-16 2005 30.5 -87.9 Fairhope Alabama
60 01-16 2005 30.5 -97.9 NewCity Alabama
70 01-16 2005 30.5 -97.9 NewCity Alabama
80 01-16 2005 30.5 -97.9 NewCity Alabama
70 01-16 2005 30.5 -97.9 NewCity Alabama
55 01-16 2005 30.5 -97.9 NewCity Alabama
", header = T, stringsAsFactors = F)
library(tidyverse)
df %>%
group_by(Latitude, Longitude, year) %>%
filter(AQI > 50) %>%
summarise(count = n()) %>%
select(year, Latitude, Longitude, count) %>%
mutate_at(vars(count), cut,
breaks = c(min(.), 4, max(.)), labels = c("No", "Yes"))
# year Latitude Longitude count
# <int> <dbl> <dbl> <fctr>
#1 2005 30.5 -97.9 Yes
#2 2005 30.5 -87.9 No