作者dreler1 (....)
看板R_Language
标题[问题] 数据转换 字元到数字
时间Sat Jul 11 22:46:22 2015
[软体熟悉度]: 入门
[问题叙述]:
我有一组数据
data <- read.csv("OLFdata.csv", header = T)
data[data == "Null"] <- NA
data$date <- as.POSIXct(strptime(data$date,format = "%m/%d/%Y %H:%M",tz="GMT"))
整理之後发现从第2 到 第23column的数据都被读成字元
上网找到了
data$a <- as.numeric(as.character(data$a))
这个可以帮我转成数字
於是我想一口气完成转换
我尝试了
data[2:23] <- as.numeric(as.character(data[2:23])
Warning message:
NAs introduced by coercion
全部都变成NA 有办法一次做完吗?
目前我已经一个一个转好了
我画了一个 multiple y vs x的图
想要改 y轴
用aixs都没反应 我尝试用 axis(side = 2, col = 'darkgreen')
类似这样的指令 就跑不出来 整个 Rstudio停在那边 我要强制停止
R-3.2.1 Rstudio-0.99.451 windows OS
或者这样说 我要画 multiple Y vs X
dailymean = aggregate(data, list(Date=as.Date(data$date)),mean,na.rm=T)
xyplot(dailymean$a ~ dailymean$Date, type="l", ylab = "a")
axis(2,pretty(range(dailymean$a)))
par(new=T)
xyplot(dailymean$b ~ dailymean$Date, type="l", ylab = " ")
axis(4,pretty(range(dailymean$b)))
http://stackoverflow.com/questions/9627389/xy-plot-with-multiple-y-scales
参考这个下去做的
但是 axis 都没反应
我想说改个颜色看看
axis(2, col="darkgreen")
看 axis这个function 正常吗
结果 process 转了十几分钟 没回应 我就手动关掉了 改个轴 会那麽吃资源吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 107.15.112.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1436625985.A.192.html
※ 编辑: dreler1 (107.15.112.169), 07/11/2015 23:26:39
※ 编辑: dreler1 (107.15.112.169), 07/11/2015 23:40:50
1F:→ celestialgod: 少一个 , 07/11 23:46
2F:→ celestialgod: 要用data[,2:23] 07/11 23:47
3F:推 leo0650: data[,2:23] <- sapply(data[,2:23]), function(x){ 07/11 23:48
4F:→ leo0650: as.numeric(as.character(x))} 07/11 23:49
5F:→ leo0650: ) 07/11 23:49
6F:推 leo0650: 直接将data.frame用as.character会coerce成atomic vector 07/11 23:57
7F:→ celestialgod: data[,2:23] = as.numeric(as.matrix( 07/11 23:58
8F:→ celestialgod: as.character(a[,2:23]))) 07/11 23:58
9F:→ leo0650: 例如 str(as.character(iris))显示长度为5的字串向量,非 07/11 23:59
10F:→ leo0650: data.frame 07/11 23:59
11F:→ celestialgod: 无视我的推文 推错了(摊手 07/12 00:01
12F:→ celestialgod: 比较建议read.csv加上stringsAsFactors=FALSE 07/12 00:02
13F:→ celestialgod: 全部都是character可以直接as.numeric(as.matrix(转 07/12 00:03
14F:→ celestialgod: 或是乾脆在read.csv指定colClasses 07/12 00:04
15F:→ dreler1: 谢谢 那对於 axis改轴 可能是哪边问题吗? 07/12 00:07
16F:推 leo0650: apply系列函数等於帮你做"一个一个转"的动作喔~ 07/12 00:07
18F:→ celestialgod: 一个个转 你等於一次次复制data.frame 07/12 00:11
19F:→ celestialgod: 想办法一次解决吧 07/12 00:11
20F:→ celestialgod: axis问题 你要全部PO上来才知道 这样看不出来 07/12 00:12
※ 编辑: dreler1 (107.15.112.169), 07/12/2015 00:22:41
21F:→ celestialgod: xyplot是grid based不能用asxi 07/12 00:41
22F:→ celestialgod: stackoverflow上是用plot 07/12 00:42
23F:→ celestialgod: xyplot要改axis要在panel里面增加panel.axis 有需要 07/12 00:43
24F:→ celestialgod: 再改给你看 07/12 00:43
25F:→ celestialgod: 不然就考虑latticeExtra的doubleYAxis 07/12 00:44
26F:→ dreler1: 我自己试试看先 谢谢了 07/12 00:52
※ 编辑: dreler1 (107.15.112.169), 07/12/2015 04:12:06
※ 编辑: dreler1 (107.15.112.169), 07/12/2015 04:14:55
我最後用
> cols <- names(data)
# names of variables
> cols <- cols[-1]
#exclude date
> cols <- cols[-23:]
#exclude rest
> data[cols] <- sapply(data[cols],as.numeric)
# covert data to numeric data
完成 现在来试试看 panel的部分 XD
※ 编辑: dreler1 (107.15.112.169), 07/12/2015 04:32:56