두 개의 열로 이름과 높이를 가진 테이블이 있습니다. 저는 6 피트 이상, 4 피트 미만 및 4 피트 -6 피트 인 사람들을 키가 크고 짧고 평균으로 분류하고 싶습니다.열을 범주로 정렬
저는 R-studio에서 이것을하려고합니다. 별도의 열로 분류하는 방법조차도 괜찮습니다.
**Name Height**
James 5.6
John 3.7
Ron 6.8
Tor 5.2
두 개의 열로 이름과 높이를 가진 테이블이 있습니다. 저는 6 피트 이상, 4 피트 미만 및 4 피트 -6 피트 인 사람들을 키가 크고 짧고 평균으로 분류하고 싶습니다.열을 범주로 정렬
저는 R-studio에서 이것을하려고합니다. 별도의 열로 분류하는 방법조차도 괜찮습니다.
**Name Height**
James 5.6
John 3.7
Ron 6.8
Tor 5.2
귀하의 데이터 :
Name<-c("James", "John", "Ron", "Tor")
Height<-c(5.6,3.7,6.8,5.2)
dat<-data.frame(Name,Height)
당신은 할 수 creatin에 의해 이것을하십시오 g 당신의 기준에 따라 새로운 변수 및 추가 카테고리 :
dat$group<-"average"
dat$group[dat$Height<=4] <-"short"
dat$group[dat$Height>=6] <-"tall"
# Name Height group
#1 James 5.6 average
#2 John 3.7 short
#3 Ron 6.8 tall
#4 Tor 5.2 average
cut
dat <- structure(list(Name = c("James", "John", "Ron", "Tor"), Height = c(5.6,
3.7, 6.8, 5.2)), .Names = c("Name", "Height"), class = "data.frame", row.names = c(NA,
-4L))
dat$class <- with(dat,
cut(Height,
breaks=c(-Inf,4,6,Inf),labels=c("short", "average", "tall")))
dat
# Name Height class
# 1 James 5.6 average
# 2 John 3.7 short
# 3 Ron 6.8 tall
# 4 Tor 5.2 average
class(dat$class)
#[1] "factor"
, 당신은 labels=F
를 선택할 수 있습니다
사용 및
dat$class <- with(dat, c("short","average", "tall")[cut(Height,breaks=c(-Inf,4,6,Inf), labels=F)])
class(dat$class)
#[1] "character"
cut
하나의 방법입니다하지만 당신 요인을 준다. 또 다른 방법은 findInterval
과 인덱스로 유망한 것은 문자 벡터 제공 :
c('short','average','tall')[ findInterval(dat$Height, c(-Inf, 4,6,Inf)) ]
나는 편집 –
@Ricardo Saporta를 따라 쉽게 전에 당신이 그것을 가지고 어떻게, 난 그냥 코드를 포맷 생각을, 나는 희망 이제는 더 읽기 쉽습니다. :-) – akrun