3
내 데이터 집합의 이상 치를 몇 가지 그룹화 변수로 식별하고 싶습니다. 따라서 추가 값 컬럼에 대해 FALSE/TRUE 행을 가질 것입니다. 여기서는 숫자 변수 만 포함하겠습니다.특정 입력 열에 대해서만 dplyr 파이프 내에서 lapply를 사용하여 열을 만드는 방법은 무엇입니까?
library(AER)
# Load Data
data("CigarettesSW")
head(CigarettesSW)
# state year cpi population packs income tax price taxs
# 1 AL 1985 1.076 3973000 116.5 46014968 32.5 102.18 33.35
# 2 AR 1985 1.076 2327000 128.5 26210736 37.0 101.47 37.00
# 3 AZ 1985 1.076 3184000 104.5 43956936 31.0 108.58 36.17
# 4 CA 1985 1.076 26444000 100.4 447102816 26.0 107.84 32.10
# 5 CO 1985 1.076 3209000 113.0 49466672 31.0 94.27 31.00
# 6 CT 1985 1.076 3201000 109.3 60063368 42.0 128.02 51.48
# Custom function
is_outlier <- function(x) {
return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}
R> CigarettesSW %>% group_by(state) %>% mutate(outlier = lapply(., is_outlier))
Error in mutate_impl(.data, dots) : factors are not allowed
여기서는 숫자 변수 만 전달하려고했습니다.
R> CigarettesSW %>% group_by(state) %>% mutate_at(3:9, outlier = lapply(., is_outlier))
Error in quantile.default(x, 0.25) : factors are not allowed
그러나 오류를 반환하는 것으로 보입니다. 다르게 해결하는 방법을 모르겠습니다.