저는 R과 프로그래밍에 새로운 것이 일반적입니다. 나는 현재 데이터 변환을위한 코드 조각을 쓰고 있는데, 누군가 나를 도와 줄 시간을 좀 갖기를 희망한다. 재현 exemple 이하팩터 수준에 따라 변수 계산
:
# Data
a <- c(rnorm(12, 20))
b <- c(rnorm(12, 25))
f1 <- rep(c("X","Y","Z"), each=4) #family
f2 <- rep(x = c(0,1,50,100), 3) #reference and test levels
dt <- data.frame(f1=factor(f1), f2=factor(f2), a,b)
#library loading
library(tidyverse)
목표 : 계산의 기준 값을 이용하여 모든 값 (a
, b
). 계산은 a/a_ref
과 a_ref = a
인 경우 가족에 따라 f2=0
(f1
은 X, Y 또는 Z 일 수 있음)이어야합니다.
test <- filter(dt, f2!=0) %>% group_by(f1) %>%
mutate("a/a_ref"=a/(filter(dt, f2==0) %>% group_by(f1) %>% distinct(a) %>% pull))
내가 얻을 :
당신이 a
이 a_ref
으로 나누어 볼 수있다. 하지만 내 스크립트는 가족 f1
에 관계없이 참조 값 (a_ref
)의 사용을 재활용하는 것으로 보입니다.
A
이 (f1
)과 관련하여 계산되었으므로 제안 사항이 있습니까?
읽어 주셔서 감사합니다.
편집
내가 '수동으로 실시'할 수있는 방법을 발견
filter(dt, f1=="X") %>% mutate("a/a_ref"=a/(filter(dt, f1=="X" & f2==0) %>% distinct(a) %>% pull()))
f1 f2 a b a/a_ref
1 X 0 21.77605 24.53115 1.0000000
2 X 1 20.17327 24.02512 0.9263973
3 X 50 19.81482 25.58103 0.9099366
4 X 100 19.90205 24.66322 0.9139422
문제는 내가 따라서 각 변수와 가족과의 코드를 업데이트해야 할 것이다 그것을하는 깨끗한 방법이 아닙니다.
'a_ref' 열을 추가하여 언급 한 내용에 따라 올바른 방식으로 계산했는지 확인했습니다. 프로세스가 올바르게 보이면 제거 할 수 있습니다. – AntoniosK
참조 값을 참조하는 새 변수를 만드는 것에 대해 생각하지 않았습니다! 고마워요. 어떤 아이디어 어떻게 모든 값 (a & b)을 계산할 수 있습니까? 실제로 40 개의 변수가 있습니다 ... –
a_ref, b_ref 등을 사용 하시겠습니까? – AntoniosK