繁体   English   中英

在R中转换数据类型

[英]Converting data types in R

我想了解如何将第一种数据类型转换为可以使用的数据类型。 这是我使用的代码,基本上我只是想对垃圾邮件数据集进行OLS回归,然后计算std错误和测试错误。 但是我在转换下面的数据类型时遇到了麻烦。 这是代码,因此您可以重现该示例。 可以在以下链接找到垃圾邮件和测试数据: https : //statweb.stanford.edu/~tibs/ElemStatLearn/ (转到左侧的数据标签,然后向下滚动到垃圾邮件数据)

# 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

此底线fit.ls $ coef生成下面的数字列表。 我基本上想转换该数据类型,以便可以使用它来计算std错误和测试错误。

在此处输入图片说明

您可以使用reshape2实现此目的。

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

尝试这个

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

您现在可以轻松计算sd

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM