2017-03-23 1 views
0

Ich möchte verstehen, wie man den ersten Datentyp in einen Datentyp umwandelt, mit dem ich arbeiten kann. Hier ist der Code, den ich benutze, im Grunde versuche ich nur, OLS-Regression auf dem Spam-Datensatz zu machen und dann den Standardfehler und Testfehler zu berechnen. Ich habe jedoch Probleme beim Konvertieren der Datentypen unten. Hier ist der Code, damit Sie das Beispiel reproduzieren können. Die Spam-und Testdaten können unter diesem Link zu finden: https://statweb.stanford.edu/~tibs/ElemStatLearn/ (auf der linken Seite auf den Daten Registerkarte gehen und dann zu Spam-Daten nach unten scrollen)Konvertierung von Datentypen in R

# reading in the data 
spam <- read.table("spam.data.txt")  # X 
test.set <- read.table("test.set.txt") # tt 

# train and test set 
x.train = subset(spam, test.set==0) # assigning the train to 0 
p = dim(x.train)[2]-1    # dimension 
x.test = subset(spam, test.set==1) # assigning the test to 1 

# standardization of predictors 
trainst <- x.train 
for(i in 1:58) { 
    trainst[,i] <- trainst[,i] - mean(spam[,i]); 
    trainst[,i] <- trainst[,i]/sd(spam[,i]); 
} 
testst <- x.test 
for(i in 1:58) { 
    testst[,i] <- testst[,i] - mean(spam[,i]); 
    testst[,i] <- testst[,i]/sd(spam[,i]); 
} 

# permuting data frames 
train = trainst[sample(nrow(trainst)),] 
test = testst[sample(nrow(testst)),] 
library("MASS") 
fit.ls <- lm(train$V58 ~ . - 1, train) 
ls <- fit.ls$coef 

Dieser Unterm Strich fit.ls $ Koef ist, was die Liste produziert von Zahlen unten. Ich möchte diesen Datentyp im Grunde konvertieren, damit ich ihn verwenden kann, um den Standardfehler und Testfehler zu berechnen.

enter image description here

+0

wie ein Atom-Vektor Sieht aus. Wie wäre es mit 'cbind (Daten)'? Danke für das tolle reproduzierbare Beispiel, übrigens. –

+1

"* Ich kann Code zur Verfügung stellen - ich bin mir nur nicht sicher, ob es dafür notwendig ist. *" Code ist hier immer notwendig, egal wie einfach. – thelatemail

+0

Ok Entschuldigung - ich bin eindeutig ein Anfänger, danke für deine Antworten – Chris95

Antwort

2

Versuchen Sie, diese

df <- do.call(rbind, lapply(ls, data.frame, stringsAsFactors=F)) 


head(df) 
#  X..i.. 
#V1 -0.02287274 
#V2 -0.03491058 
#V3 0.05197059 
#V4 0.03802391 
#V5 0.10026819 
#V6 0.07542830 

können Sie jetzt leicht sd berechnen

df %>% dplyr::rename(value = X..i..) %>% mutate(sd = sd(value)) 
3

Sie können dies mit reshape2 acheive.

library(reshape2) 
data = c(v1 = 5, v2= 3, v3= 7) 
melted = melt(data) 
Verwandte Themen