그룹의 첫 번째 값 (한 변수의)과 같은 그룹의 다른 모든 값 (같은 변수의) 사이의 백분율 변화를 얻으려고합니다.
데이터 예 :
df = data.frame(group = c(rep('A',4), rep('B',3)),
response = c(1,4,2,1,1,2,3),
treatment = c("control","100mg","200mg","50mg","control","100mg","200mg"))
> df
group response treatment
A 1 control
A 4 100mg
A 2 200mg
A 1 50mg
B 1 control
B 2 100mg
B 3 200mg
다시 말해, 나는 백분율 변화를 얻고 싶습니다
동일한 그룹에서 다른 모든치료레벨에 대한치료'통제'에 대한응답.치료레벨의 수는 그룹별로 다를 수 있습니다.
지금까지 가지고있는 것 :
# function for % change
pct <- function(x) {(x/lag(x)-1)*100}
library(dplyr)
# group data and apply function
percChange <- df %>%
group_by(group) %>%
mutate_at(vars(response), funs(pct))
# the output (perChange) is:
# group response treatment
# 1 A NA control
# 2 A 300 100mg
# 3 A -50 200mg
# 4 A -50 50mg
# 5 B NA control
# 6 B 100 100mg
# 7 B 50 200mg
하지만 원하는 결과는 다음과 같습니다.
# group response treatment
# 1 A NA control
# 2 A 300 100mg
# 3 A 100 200mg
# 4 A 0 50mg
# 5 B NA control
# 6 B 100 100mg
# 7 B 200 200mg
나는 모든 곳을 보았고 비슷한 것들을 발견했지만 내가 추구하는 것은 없습니다. 감사.
-
답변 # 1
-
답변 # 2
JasonAizkalns가 잘 대답했지만
pct
를 유지하려는 경우를 대비하여 기능.pct
에서 작은 오류를 수정하십시오. 기능을 작동시킵니다.pct <- function(x) { ((x-x[1])/x[1]) * 100 } > percChange # A tibble: 7 x 3 # Groups: group [2] group response treatment <fct> <dbl> <fct> 1 A 0 control 2 A 300 100mg 3 A 100 200mg 4 A 0 50mg 5 B 0 control 6 B 100 100mg 7 B 200 200mg
관련 자료
- sql - Postgres에서 현재 행과 이전 행 사이의 변경 비율을 어떻게 계산할 수 있습니까?
- r - 데이터 프레임에서 행 관찰 인 값에 대한 값의 백분율 점유율을 계산합니다
- Google 데이터 스튜디오에서 매일 변경되는 비율
- r - 데이터 프레임의 다른 열에 대해 한 열의 통계를 계산하는 방법은 무엇입니까?
- sql - MySQL에서 중첩 테이블 아키텍처의 백분율을 계산하는 방법
- python - 그룹화 된 목록에서 발생 횟수를 계산하려고합니다
- Excel에 입력 한 날짜를 기준으로 한 달 (주말 및 미국 공휴일 제외)의 비율을 계산하는 방법은 무엇입니까?
- mysql - 고유 한 각 열 값을 기준으로 백분율 계산
- postgresql - 마감 퍼센트를 계산하는 창 함수
- apache spark - 데이터 브릭의 스칼라 코드를 변경하여 이메일을 기반으로 그룹화 된 데이터를 보냅니다
- 그룹화 된 데이터에 대해 Excel에서 SKEWP를 계산하는 방법은 무엇입니까?
- sql server - SQL을 사용하여 백분율 계산
- powerbi - 필터로 변경되는 백분율을 계산하는 Power BI 측정
- python - 하나의 속성으로 그룹화되었지만 팬더의 두 번째 열에 제공된 값을 계산하는 방법
- mysql - 열 값의 개수로 백분율을 계산하는 방법
- dataframe - R의 모든 열에서 0이 아닌 피쳐의 백분율을 계산하는 방법은 무엇입니까?
first()
를 사용하고 싶습니다 :2019-03-20에 reprex 패키지 (v0.2.1)에서 생성