저는 매우 큰 데이터 프레임과 특정 계수에 적용 할 조정 계수를 가지고 있습니다. 각 계수는 하나의 계수에만 적용됩니다. 1 년. 아래 코드는 각 행에 대해 올바른 계수를 선택하고 dat
을 영향을받지 않은 연도에 포함하고 dat
에 해당 계수를 곱하여 dat
을 대체하는 벡터를 반환합니다. 내가이 일을 얻는 경우에dplyr : 돌연변이 내부 함수는 현재 행에서 열의 요소를 찾을 수 있습니까?
year <- rep(1:5, times = c(2,2,2,2,2))
dat <- 1:10
df <- tibble(year, dat)
adjust = c(rep(0, 4), rep(c(1 + 0.1*1:3), c(2,2,2)))
df %>% mutate(dat = ifelse(year < 5, year, dat*adjust[[year - 2]]))
, 나는 다음과 같은 오류 얻을 :이 꽤 확신
Evaluation error: attempt to select more than one element in vectorIndex.
을 추출 연산자 때문에 전체 벡터 년보다는 올해로 [[
취급 year
현재 행이 있으므로 벡터화 된 뺄셈이 있습니다. [[
은 벡터 값 인덱스에서 질식합니다.
나는이 문제를 해결할 수있는 많은 방법이 있음을 알고 있습니다. 나는 지금 일하는 중첩 된 ifelse를 포함하여 특히 추악한 방법을 가지고있다. 제 질문은, 제가 R과 dplyr-idiomatic 방식으로하려는 것을 할 수있는 방법이 있습니까? 우리가 행이나 행 그룹을 별개의 엔티티로 취급하기를 원하기 때문에 어떤면에서는 필터 또는 group_by 문제처럼 보일지 모르겠지만 그렇게하는 방법을 찾지 못했습니다.
전체 벡터의 결과가 아닌 행 단위로 정의하거나 생각하기 쉬운 몇 가지 기능이있는 것처럼 보입니다. 나는 각 연도에 대한 정확한 조정을 포함하는 단일 벡터를 생성 할 수 있지만, 연간 행 수가 다양하기 때문에 그 벡터를 구성하기 위해 다중 값 조건 테스트를 적용해야하므로 동일한 문제가 발생합니다.
그렇지 않습니까?
어떻게'adjust' year''에 매핑합니까? 당신은 5 년이 지났지 만 세가지'조정 '가치 만 있습니다. – Psidom
년 년보다 작년에 매핑 - 실제로, 3 미만이 아닙니다. 2. 해결하도록하겠습니다. – andrewH