Domanda

Sto cercando di fare una semplice trasformazione.Ho usato il seguente codice e ha funzionato bene:

data_stdz <- transform(data_header, z.v1 = v1+2)
.

Ma, non riesco a far funzionare il seguente codice:

data_stdz <- transform(data_header, z.v1 = (v1 - mean(v1))/(2*sd(v1))
.

Ho anche provato a ottenere solo la funzione media per lavorare:

data_stdz <- transform(data_header, z.v1 = mean(v1)
.

Ma, continuo a ricevere il seguente errore:

Error: unexpected symbol in:
"data_std2 <- transform(data_header, z.v1 = mean(v1)
data_std2"
.

Quindi suppongo che abbia qualcosa a che fare con come sto usando la funzione media e SD, ma non sono stato in grado di capirlo.

Esempio dei dati:

v1   v2  v3
6.7 3.8 1.2
6.3 3.2 1.2
6.1 2.6 1.6
7   2.4 1
NA  NA  NA
6.5 3.6 2.6
6.1 2.4 1.6
6   5.6 5.2
7   2.8 1
6.7 3.8 1.4
5.7 4.2 2.6
5.1 5.6 5
NA  NA  NA
.

È stato utile?

Soluzione

Your problem is likely (in additon to what gavin said) the NAs. Use na.rm=TRUE as in:

transform(data_header, z.v1 = (v1 - mean(v1, na.rm =T))/(2*sd(v1, na.rm =T)))

Altri suggerimenti

Base R has the scale() function for this purpose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top