作者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/m.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