데이터 세트가 있습니다 : (실제로는 100 개 이상의 그룹이 있습니다)
dplyr을 사용하여 각 그룹에 대한 변수 y를 만들고 y의 첫 번째 값을 1로 채우고 싶습니다.
두 번째 y = 1 * 첫 x + 2 * 첫 y
열 y, all = 1을 만든 다음
df%>% group_by(group)%>% mutate(var=shift(x)+2*shift(y))%>% ungroup()
그러나 y에 대한 공식은 항상 초기화 y 값 -1을 사용합니다.
두 번째 y = 1 * 첫 x + 2 * 1
누군가 나에게 이것에 대한 아이디어를 줄 수 있습니까? 감사합니다!
내 결과 데이터의 dput은 다음과 같습니다.
structure (list (group = c ( "a", "a", "a", "a", "a", "b", "b", "b"), x = c (1, 2, 3 , 4, 5, 6, 7, 8), y = c (1, 3, 8, 19, 42, 1, 8, 23)), row.names = c (NA, -8L), class = c ( "tbl_df", "tbl", "data.frame"))
이러한 계산을 수행하기 위해 기본 R accumulate
에서 purrr
또는 Reduce
기본 R에서 사용할 수 있습니다 .
이미 사용 dplyr
중이므로 다음을 사용할 수 있습니다 accumulate
.
library(dplyr)
df %>%
group_by(group) %>%
mutate(y1 = purrr::accumulate(x[-n()], ~.x * 2 + .y, .init = 1))
# group x y y1
# <chr> <dbl> <dbl> <dbl>
#1 a 1 1 1
#2 a 2 3 3
#3 a 3 8 8
#4 a 4 19 19
#5 a 5 42 42
#6 b 6 1 1
#7 b 7 8 8
#8 b 8 23 23
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다