2017-11-07 12 views
1

저는 R이 매우 새롭습니다. 환자를 수면에서 파생 된 뇌파와 함께 작업하고 있습니다. I는 C3-M2 및 C4-M1의 평균 값이 필요하므로 I는 벡터 생성 R - 조건에 따라 하나의 벡터를 두 개의 분리 된 벡터로 나눕니다. (케이스/제어 환자)

ID C3-M2 C4-M1 Disorder 
12  347 325 Control 
13  397 346 Bipolar 
14  368 363 Control 
15  370 379 Control 
16  368 310 Bipolar 

:

fast_spin_numb <- c((`C3-M2`+ `C4-M1`)/2) 

fast_spin_numb을 따라서 5를 포함한다 이제 I이 유사한 테이블을 값.

지금은 fast_spin_bipo 만 바이폴라 환자의 수단 fast_spin_cont 컨트롤의에만있는 수단을 포함해야하는 두 개의 별도의 벡터를 생성하고 싶습니다.

나는

split(fast_spin_numb, disorder == "control", drop = FALSE) 

그것을 시도했지만 나는 새로운 벡터에 자동으로 번호를 넣어하는 방법을 해결책을 찾을 수 없습니다.

는뿐만 아니라 나는이 시도했다 : 나를 적어도 몇 가지 테스트를 실행할 수 있습니다

tapply(fast_spin_numb, disorder, shapiro.test)

합니다. 하지만 그것은 예를 들어 qqplot (컨트롤에만 해당)을 만드는 데 도움이되지 않습니다.

대단히 감사합니다 !!

답변

0

by, 객체 지향 래퍼 tapply을 고려해보십시오.이 래퍼는 하나 이상의 인수로 데이터 프레임을 부분 집합하여 함수의 출력 목록을 반환 할 수 있습니다. 아래는 명명 된 벡터 목록을 반환합니다.

데이터

txt = ' ID "C3-M2" "C4-M1" Disorder 
12  347 325 Control 
13  397 346 Bipolar 
14  368 363 Control 
15  370 379 Control 
16  368 310 Bipolar' 

df <- read.table(text=txt, header=TRUE) 

코드

mean_vectors <- by(df, df$Disorder, FUN=function(i) (i$`C3.M2`+ i$`C4.M1`)/2) 

mean_vectors$Control 
# [1] 336.0 365.5 374.5 
mean_vectors$Bipolar 
# [1] 371.5 339.0 
+0

이 홍보 내 최근 계속 캠페인에 추가되지 않고있는'by' R에서 : [1] (https : //로 유래 .com/a/47124608/1422451), [2] (https://stackoverflow.com/a/47128403/1422451), [3] (https://stackoverflow.com/a/47027343/1422451), [4 ] (https://stackoverflow.com/a/46836601/1422451), [5] (https://stackoverflow.com/a/46839140/1422451) – Parfait

+0

그것은 작동합니다! 고마워요 !! – ElenaNick

+0

좋아요! 기꺼이 도와주세요. StackOverflow에서 [thanks] (https://meta.stackexchange.com/a/5235)라고 말하는 것을 잊지 마십시오! – Parfait