使用cut()函数创建因子:错误

时间:2018-02-17 19:12:34

标签: r tidyverse

我在尝试创建一个新变量时收到此Error in mutate_impl(.data, dots) : Evaluation error: lengths of 'breaks' and 'labels' differ.错误,该变量指示空气质量指数在超过100天内是否大于50。基本上,我想创建一个“是”或“否”和标签。

我观看了一段关于cut()功能的YouTube视频。我尝试了一些break参数的不同变体。我觉得好像很接近,但我不明白这个错误。中断应该从最小值开始并以100结束。任何超过100到最大值都应该得到“是”

1 个答案:

答案 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