2017-04-09 1 views
0

일부 데이터가 있고 분석을하려고합니다. 나는 R을 사용하는 방법을 모른다. 그러나 나는 인터넷에서 몇 개의 비디오를 보았고 내가 필요로하는 동일한 테스트를 모방하려했다. 내가하고 싶은 것은 처음 네 (1-4) 행과 다음 네 (4-8) 행을 비교하는 것입니다. 결과를 얻은 후 다음 열에 동일한 테스트를 적용하고 싶습니다. 따라서 4 가지 P 값을 갖게됩니다. 첨부 된 예시 이미지 attached image을 찾으십시오. 총 4 개의 컬럼이 있습니다. 파일럿 테스트는 나중에 큰 컬럼 크기로 수행됩니다. 누군가 내가 뭘 잘못하고 있고 코드를 편집 할 수 있는지 물어봐도 될까요? 나는 모든 도움을 주셔서 대단히 기뻐하실 것입니다.오류 : 각 열의 R이 반복됩니까?

Test = matrix(c(120, 115, 132, 117, 116,117,125,120,110,113,128,115),ncol=4, nrow = 4) 
Test=t(Test) 

Drug = matrix(c(88, 80, 85, 85, 83,84,90,83,83,79,86,82),ncol=4, nrow = 4) 
Drug=t(Drug) 
mydata<-cbind(Test,Drug) 


for (i in 1:4) 
wilcox.test(mydata[i,1:4],mydata[i,5:8], mu=0, alt="two.sided", paired=T, conf.int=F,conf.level = 0.99, exact=T,correct=T) 
+0

, 그것은 작동합니다. 당신은 동점에 관하여 몇몇 경고 메시지를 얻는다. 그게 당신 문제인가요? – KoenV

+0

@KoenV, 아니, 문제는 루프가 작동하지 않는다는 것입니다. 그것은 경고를 주며 아무것도 계산하지 않습니다. for 루프를 삭제하고 "i"를 1 또는 2 또는 3으로 변경하면 작동하지만 열의 숫자에 숫자를 쓰는 대신 루프에서 수행하려고합니다. –

+0

@KoenV 내가 원하는 것은 "i"를 루프로 사용하여 4 개의 다른 p 값을 줄 수 있습니다. ** mydata [1,1 : 4] -mydata [1,5 : 8] ** ** mydata [2,1 : 4] -mydata [2,5] : 8] **, ** mydata [3,1 : 4] -mydata [3,5 : 8] **, ** mydata [4,1 : 4] -mydata [4,5 : 8] **. 따라서 매번 열 번호를 변경하고 싶지는 않지만 루프 나 자동으로 다음 열로 이동하여 다시 계산하는 것을 사용하고 싶습니다. –

답변

1

I 열에 그룹을 지정하여이위한 data.frame 또는 data.table를 이용하여 추천 할 것 (이 예에서는 행에 대응하는, 예를 들어 A, B, C), 테스트/약물 및 값과 하나 개의 열을 지정하는 하나 개의 컬럼 : 그룹 별 약물 값 대

library(data.table) 
Test <- c(120, 115, 132, 117, 116,117,125,120,110,113,128,115) 
Drug <- c(88, 80, 85, 85, 83,84,90,83,83,79,86,82) 
groups <- rep(c(rep("A", 4), rep("B", 4), rep("C", 4)), 2) 
variable <- c(rep("test", length(Test)), rep("drug", length(Drug))) 
dt <- data.table(group = groups, variable = variable, value = c(Test, Drug)) 

# >dt 
#  group variable value 
# 1:  A  test 120 
# 2:  A  test 115 
# 3:  A  test 132 
# 4:  A  test 117 
# 5:  B  test 116 
# 6:  B  test 117 
# 7:  B  test 125 
# 8:  B  test 120 
# 9:  C  test 110 
# 10:  C  test 113 
# 11:  C  test 128 
# 12:  C  test 115 
# 13:  A  drug 88 
# 14:  A  drug 80 
# 15:  A  drug 85 
# 16:  A  drug 85 
# 17:  B  drug 83 
# 18:  B  drug 84 
# 19:  B  drug 90 
# 20:  B  drug 83 
# 21:  C  drug 83 
# 22:  C  drug 79 
# 23:  C  drug 86 
# 24:  C  drug 82 
#  group variable value 

테스트 테스트 값은 다음의 문제이다 : 나는 당신의 코드를 실행

dt_stat <- dt[, .(p_value = wilcox.test(value~variable, mu=0, alt="two.sided", paired = TRUE, 
    conf.int = FALSE, conf.level = 0.99,exact = TRUE, correct = TRUE)$p.value), 
    by = .(group)] 

# > dt_stat 
# group p_value 
# 1:  A 0.09751254 
# 2:  B 0.09751254 
# 3:  C 0.12500000 
+0

선생님, 저의 하루를 저장하셨습니다. 고맙습니다. 다른 질문을하고 싶습니다. 이 두 그룹과 같은 100 개의 열이 있다면 20 개의 다른 문자를 써야합니까? 3 개의 다른 열에 대해서는 A, B, C를 썼지 만 엄청난 양의 열 번호에 대해서는 짧은 방법이 있습니까? +1 +1 +1 +1 –

+0

안녕하세요. A, B, C 대신 숫자 (예 : 1 ~ 100)를 사용할 수 있습니다. –

+0

반복 할 수 있습니까? 나는 이것을 사용하더라도 아주 잘 사용할 수 있지만, 1에서 100을 쓰는 대신 짧은 커팅이 있다면 나는 기쁜 것보다 더 낫다는 것을 의미한다. 큰 도움을 주셔서 다시 한 번 감사드립니다. –