다음은 내가하려는 일의 쉬운 버전입니다. 나는 다음과 같은 벡터가 :2 개 이상의 인수가있는 조건에서 변수 만들기
wage = 1:10 # Generate a sequence from 1 to 10
을 그리고 또 다른 벡터를 생성 할 wage_level
같은 것을 :
(I) wage_level
이 "low"
입니다 wage
미만 5
(II) wage_level
는 normal
경우 경우 wage
은 5
(iii) wage_level
이 wage
경우 high
은 앞에서 지적했듯이 나는, 그러나, 나는 그것을 할 중첩 ifelse
문을 사용할 수있어 더 큰 5
보다, 이것은하지만 난 정말 내가 약 15 대안을 가지고 있기 때문에 수행 할 작업의 단순화 된 버전 .
편집
아래에 제공된 대답은 실제로 많은 경우에서 잘 작동 cut()
기능을 사용한다. 그러나, 그것은 내 경우에는 "작동"하지 않는 것 같습니다. 다음은 자세한 설명입니다. 의 내가 cut()
기능을 사용하여 다른 벡터합니다 (rating
벡터를) 만들 수 wage_level
벡터를 사용한다고 가정하자, 이제
wage = runif(10, 1, 10) # Randomly generate 10 values between 1 and 10
# Here I use the cut() function
wage_level = cut(wage,
breaks = c(1, 4, 6, 10),
labels = c("low", "normal", "high"),
include.lowest = TRUE)
> wage
[1] 5.522422 4.793292 8.161671 5.480415 1.396909 3.403013 4.940242 7.762142 6.364159 4.603998
> wage_level
[1] normal normal high normal low low normal high high normal
Levels: low normal high
:
은 내가wage_level
벡터를 만들 수
cut()
기능을 사용할 수 있었다. 다음과 같이
rating
벡터를 생성하기위한 조건은 다음
(I) rating
는 "1"
경우 wage_level
미만 "low"
(II) rating
는 동일하다 2
wage_level
경우이다 "normal"
(III) rating
3
wage_level
이 "high
보다 큰 경우
내 문제는 t입니다. 모자를 사용하여 cut()
기능을하지 않습니다 rating
벡터 numeric
벡터는 내 선택의 가치 것입니다. 다음 코드는 작동하지 않습니다
rating = cut(as.numeric(wage_level),
breaks = c(0, 1, 2, 3),
labels = c(1.2, 6.5, 8.9),
include.lowest = TRUE)
> as.numeric(rating)
[1] 2 2 3 2 1 1 2 3 3 2
내가 주로 여기에 두 가지 문제가 있습니다
(내가) 내가 실제 문자열 (예를 사용하는 방법을 선호하는 것 "저" ","normal "와 높음 ")
(ii) rating
벡터의 값은 지정한 값과 아무 관계가 없습니다.
원하는 결과를 얻기위한 다른 방법은 없습니까?
는 당신의 도움을 주셔서 대단히 감사합니다 :) 벡터가
아마도'cut()'을 찾고있을 것입니다. – ndoogan
@ndoogan이 자리하고 있습니다. 많은 양의 간격을두고 작업하는 것을 발견했습니다.'breaks '와'labels'을 자체 변수로 사용하는 것이 도움이됩니다. 종종'seq'와'paste0'로 생성됩니다. –
@ndoogan 제발, 제 편집했습니다. 질문 좀 해봐 줄래? – SavedByJESUS