创建因子:使用 cut() 函数时出错
Creating a factor: error using the cut() function
我在尝试创建一个指示空气质量指数是否大于 50 超过 100 天的新变量时收到此 Error in mutate_impl(.data, dots) : Evaluation error: lengths of 'breaks' and 'labels' differ.
错误。基本上,我想创建一个 "yes" 或 "no" 和标签。
我观看了有关 cut() 函数的 YouTube 视频。我尝试了 breaks 参数的几种不同变体。我觉得好像很接近,但我不明白错误。中断应从最小值开始并恰好在 100 结束。任何超过 100 到最大值的值都应该得到 "yes"
您应该使用 cut
函数使用 mutate_at
。示例数据示例如下。
计数已减少到 4
,以将样本数据中的标签视为 "Yes"。在实际实现中可以保持为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
我在尝试创建一个指示空气质量指数是否大于 50 超过 100 天的新变量时收到此 Error in mutate_impl(.data, dots) : Evaluation error: lengths of 'breaks' and 'labels' differ.
错误。基本上,我想创建一个 "yes" 或 "no" 和标签。
我观看了有关 cut() 函数的 YouTube 视频。我尝试了 breaks 参数的几种不同变体。我觉得好像很接近,但我不明白错误。中断应从最小值开始并恰好在 100 结束。任何超过 100 到最大值的值都应该得到 "yes"
您应该使用 cut
函数使用 mutate_at
。示例数据示例如下。
计数已减少到 4
,以将样本数据中的标签视为 "Yes"。在实际实现中可以保持为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