Re: [問題] 如何將表格轉換成一行資料

看板R_Language作者 (夏澄)時間8年前 (2017/07/22 00:40), 8年前編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《c9052002 (c9052002)》之銘言: : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 新手(沒寫過程式,R 是我的第一次) : [問題敘述]: : : 目前有一個表格內容,但因為需要匯出至其他軟體,因此要變更目前的格式, : 原先的表格抬頭為編號,排序分別依照日期由上至下排列, : 而希望變更的內容為:排序=日期*編號數量由上至下 : 原本 : 1 2 3 4 ...... : 1/1 a b c d : 1/2 g h i j : 1/3 m n o p : 1/4 s t u v 一步一步來的版本 #製作sample資料 a0 <- c("1/1","1/2","1/3","1/4") a1 <- c("a","g","m","s") a2 <- c("b","h","n","t") a3 <- c("c","i","o","u") a4 <- c("d","j","p","v") #以dataframe形式合併放進data data<-as.data.frame(cbind(a0,a1,a2,a3,a4)) #取名 names(data)<-c("date","1","2","3","4") #看資料 data #==output #date 1 2 3 4 #1 1/1 a b c d #2 1/2 g h i j #3 1/3 m n o p #4 1/4 s t u v #install.packages("reshape2") #載入reshape2包 library(reshape2) #用melt()以date為準將橫資料轉為長資料放進data data <- melt(data,id.vars="date") #留下date和value欄位 data <- as.data.frame(cbind(as.character(data$date),data$value)) #取名 names(data)<-c("date","x") #排序 data<-data[order(data$date),] #看資料 data #==output # date x #1 1/1 a #5 1/1 b #9 1/1 c #13 1/1 d #2 1/2 g #6 1/2 h #10 1/2 i #14 1/2 j #3 1/3 m #7 1/3 n #11 1/3 o #15 1/3 p #4 1/4 s #8 1/4 t #12 1/4 u #16 1/4 v 日期跟欄位的處理主要都是資料型態的問題, 主要是利用reshape2包中的melt()來處理數據。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.65.162 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1500655217.A.C2F.html ※ 編輯: kial (59.115.65.162), 07/22/2017 00:51:19

07/22 21:26, , 1F
謝謝大大的細心教學,我後來安裝還是失敗,礙於時間我找到
07/22 21:26, 1F

07/22 21:28, , 2F
stack()的函式,就不需要安裝封包即能使用
07/22 21:28, 2F

07/22 21:29, , 3F
真的很感謝如此詳細解說,對於初學的我有非常大的幫助^^
07/22 21:29, 3F
文章代碼(AID): #1PSYvnml (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1PSYvnml (R_Language)