看板 R_Language 關於我們 聯絡資訊
最先想到的,是先把ALL的值取代成原本LEVEL的VALUE (取代成用逗號分隔開來的字串,以本例來說就是"1,2,3") 然後再展開 ID=c(1234,5678,91011,111213,445566) EQP=c('ABC','CDE','FFF','EEE','QEW') class=c(1,2,3,'ALL','ALL') df=data.frame(ID,EQP,class) # 使用tidyr套件的separate_rows() library(tidyr) df[which(df$class=="ALL"),"class"] <- "1,2,3" separate_rows(df,class,convert = T) *補充: 參數 convert=T 表示如果欄位class的型別是numeric,integer或logical 則會自動將字串轉成對應的型別 https://i.imgur.com/NTaX9Ea.jpg
最直覺的思路,剛好發現有現成的function就拿來用了 獻醜歹勢:P ※ 引述《getsimple (getsimple)》之銘言: : [問題類型]: : 程式諮詢 : [軟體熟悉度]: : 使用者 : [問題敘述]: : 我有點不知如何一句話敘述問題 : 因此標題打得不好請見諒~ : 目前遇到一筆資料class的部分有非常多都是用ALL : 但我需要讓他變成一般表示的方式(也就是圖中的class 1~3) : 因為我中間用了大量的字串paste在一起做compare : 因此無法資料如果是ALL我就會比對失敗 : 換句話說 : 我想要將下圖中的資料做變換 : 要完整copy整個raw的data且class擴展開來 : 拜託各位大大幫忙 : 感恩感恩 : https://i.imgur.com/y8Ql5qP.jpg
: [程式範例]:(只是一個dataframe的example) : ID=c(1234,5678,91011,111213,445566) : EQP=c('ABC','CDE','FFF','EEE','QEW') : class=c(1,2,3,'ALL','ALL') : df=data.frame(ID,EQP,class) : [關鍵字]: : 展開資料 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.187.29 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1632665203.A.310.html ※ 編輯: locka (223.137.187.29 臺灣), 09/26/2021 22:32:52 ※ 編輯: locka (223.137.187.29 臺灣), 09/26/2021 23:22:25
andrew43: 學到一招,感謝。 09/27 00:59
getsimple: 謝謝l大!! 09/27 23:43