Re: [问题] 请问如何扩展相同class的资料

楼主: 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)
: [关键字]:
: 展开资料
作者: andrew43 (讨厌有好心推文后删文者)   2021-09-27 00:59:00
学到一招,感谢。
作者: getsimple (getsimple)   2021-09-27 23:43:00
谢谢l大!!

Links booklink

Contact Us: admin [ a t ] ucptt.com