조건이 충족되면 값을 다른 것으로 대체하는 문제가 있습니다. 나는 자신의 기능을 사용하여 data_manip
을 할당하거나 필요할 때 다른 조건을 추가 할 수 있습니다.그룹화 된 데이터에서 값을 사용자 정의 함수로 바꾸기
그러나이 data_manip
기능을 사용하려고하면 할당 된 값으로 해당 그룹 내의 모든 값이 변경됩니다. 그러나이 특정 집단의 다른 가치들은이 조건을 충족시키지 못합니다. 여기
는
df <- data.frame(percent = c(0.6, 0.7,1, 0.5,0.5,1,0.4,0.6,1),
type = rep(c("good", "bad","ugly"),each=3), smoke=rep(c('Visky','Wine','Wine'),3),
sex=rep(c('male','male','female'),3))
> df
percent type smoke sex
1 0.6 good Visky male
2 0.7 good Wine male
3 1.0 good Wine female
4 0.5 bad Visky male
5 0.5 bad Wine male
6 1.0 bad Wine female
7 0.4 ugly Visky male
8 0.6 ugly Wine male
9 1.0 ugly Wine female
data_manip <- function(x,gr){
if(grepl('goo|ug',gr)&&x<1){
x[x==0.6] <- 1
}
else
x
}
df%>%
group_by(type)%>%
mutate(percent_new=data_manip(percent,type))
는
# A tibble: 9 x 5
# Groups: type [3]
percent type smoke sex percent_new
<dbl> <fctr> <fctr> <fctr> <dbl>
1 0.6 good Visky male 1.0
2 0.7 good Wine male 1.0
3 1.0 good Wine female 1.0
4 0.5 bad Visky male 0.5
5 0.5 bad Wine male 0.5
6 1.0 bad Wine female 1.0
7 0.4 ugly Visky male 1.0
8 0.6 ugly Wine male 1.0
9 1.0 ugly Wine female 1.0
나는 조건이 그들을 위해없는 경우 원래 percent
값을 유지하고 싶은를 제공, 내가 노력하는 것이다.
예상 출력
# A tibble: 9 x 5
# Groups: type [3]
percent type smoke sex percent_new
<dbl> <fctr> <fctr> <fctr> <dbl>
1 0.6 good Visky male 1.0
2 0.7 good Wine male 0.7
3 1.0 good Wine female 1.0
4 0.5 bad Visky male 0.5
5 0.5 bad Wine male 0.5
6 1.0 bad Wine female 1.0
7 0.4 ugly Visky male 0.4
8 0.6 ugly Wine male 1.0
9 1.0 ugly Wine female 1.0
시도'ifelse는()'에서'돌연변이()','ifelse는()'벡터화 기능입니다. – fhlgood
또는 mutate()에서'sapply()'를 사용하면 vectorized 출력을 반환하는 것이 mutate에서 새로운 값을 대체하거나 생성하는 데 사용될 수 있습니다. – fhlgood
@fhlgood'sapply'와 같은 결과를 얻었습니다; ( – Alexander