作者locka (locka)
看板R_Language
标题Re: [问题] 请问如何扩展相同class的资料
时间Sun Sep 26 22:06:41 2021
最先想到的,是先把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://webptt.com/cn.aspx?n=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
1F:→ andrew43: 学到一招,感谢。 09/27 00:59
2F:推 getsimple: 谢谢l大!! 09/27 23:43