2016-07-03 5 views
0

대조 그룹의 (dx = 1) 평균 및 표준 편차를 기반으로 z- 점수 변수를 만들려고합니다. 이 z-score를 만들기 위해 관심있는 모든 변수 (PCT : CST.L)를 반복하고 싶습니다. 내가 어떻게 할까? 여기에 내 데이터가있다.R 루프에서 변수 만들기

X dx PCT CST.R CST.L 
1 1 Control 15 30  5 
2 2 Control 20 24  22 
3 3 Clinical 25 20  14 
4 4 Control 17 13  12 
5 5 Clinical 14 12  11 
6 6 Control 13 20  15 

여기 내가 (잘 머리글, 적어도)처럼 보이고 싶습니다.

X dx PCT CST.R CST.L PCT_Z CST.R_Z CST.L_Z 
1 1 Control 15 30  5 
2 2 Control 20 24  22 
3 3 Clinical 25 20  14 
4 4 Control 17 13  12 
5 5 Clinical 14 12  11 
6 6 Control 13 20  15 

데이터

structure(list(X = 1:6, dx = c("Control", "Control", "Clinical", 
"Control", "Clinical", "Control"), PCT = c(15L, 20L, 25L, 17L, 
14L, 13L), CST.R = c(30L, 24L, 20L, 13L, 12L, 20L), CST.L = c(5L, 
22L, 14L, 12L, 11L, 15L)), .Names = c("X", "dx", "PCT", "CST.R", 
"CST.L"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6")) 
+0

'의 DD [paste0 (c ("PCT", "CST.R", "CST.L"),'_Z ')] <- 스케일 (DD [C ("PCT", " CST.R ","CST.L ")])' – rawr

+0

[관련] (http://stackoverflow.com/questions/6148050/creating-z-scores) 나는 잘 읽지 않았다. 통제와 임상 그룹에 의해 z 스코어를 얻고 싶습니까? 나는 당신이'dx = 1'의 평균과 sd로 무엇을 의미하는지 모른다. 단일 관찰을위한 sd가 없다. – rawr

답변

0

난 당신이 각 열에 대한 Z-점수를 계산한다고 가정하겠습니다.

Z- 점수는 (X - mean)/Standard deviation으로 계산됩니다. X 여기에서 선택한 열의 각 행이됩니다.

> df = data.frame(X = 1:6, 
+   dx = c("Control", "Control", "Clinical", "Control", "Clinical", "Control"), 
+   PCT = c(15L, 20L, 25L, 17L, 14L, 13L), 
+   CST.R = c(30L, 24L, 20L, 13L, 12L, 20L), 
+   CST.L = c(5L, 22L, 14L, 12L, 11L, 15L)) 
> df 
    X  dx PCT CST.R CST.L 
1 1 Control 15 30  5 
2 2 Control 20 24 22 
3 3 Clinical 25 20 14 
4 4 Control 17 13 12 
5 5 Clinical 14 12 11 
6 6 Control 13 20 15 
> 
> colsToCalculate = colnames(df[, 3:5]) 
> newCols = c('PCT_Z', 'CST.R_Z', 'CST.L_Z') 
> 
> for (i in seq(newCols)) { 
+ data = df[, colsToCalculate[i]] 
+ df[, newCols[i]] = (data - mean(data))/sd(data) 
+ } 
> 
> df 
    X  dx PCT CST.R CST.L  PCT_Z  CST.R_Z CST.L_Z 
1 1 Control 15 30  5 -0.51830527 1.50280954 -1.4675659 
2 2 Control 20 24 22 0.59234888 0.61590555 1.5873672 
3 3 Clinical 25 20 14 1.70300302 0.02463622 0.1497516 
4 4 Control 17 13 12 -0.07404361 -1.01008510 -0.2096523 
5 5 Clinical 14 12 11 -0.74043610 -1.15790243 -0.3893542 
6 6 Control 13 20 15 -0.96256693 0.02463622 0.3294536 
> 
+0

이것은 확실히 올바른 방향이지만,이 기능을 즐겁게 할 때 새로운 열은 모두 NA라고 말할 수있다. 왜 이런 일이 일어나는 지 아십니까? – anniea

+0

나는 그것을 이해했다!! 고맙습니다!! – anniea

+0

아마도 일부 유형/클래스 불일치 ... 당신을 도울 수있어서 기쁩니다 – shawnl