作者:
locka (locka)
2021-09-26 22:06:41最先想到的,是先把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)
: [關鍵字]:
: 展開資料