PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
R_Language
[问题] 如何一次检查多个column的字串
楼主:
daze
(一期一会)
2020-09-07 12:44:18
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
代码储存在复数字段中,希望检查是否有某些字段符合特定字串规则,输出True or False
目前用 dplyr::filter_at 是可以得到需要的结果
但需要另外产生一个data.frame再join回来
且要检查多组不同字串规则时变得更为冗长
想问看看有没有更好的写法
ex:
ID 代码一 代码二 ... 代码N
1 O33 O34 O354
2 O331 O354
3 OO33 O345
需要的结果
ID 代码一 代码二 ... 代码N O33开头 O34开头 ...
1 O33 O34 O354 True True
2 O331 O354 True False
3 OO33 O345 False True
[程式范例]:
df <- read.csv( ...... )
require(dplyr)
dftemp <- filter_at(df, vars(starts_with("代码")), any_vars(grepl("^O33", .)))
dftemp$O33开头 <- True
df <- left_join(df, dftemp )
df$O33开头 <- ifelse( is.na(df$O33开头), False, True)
然后为 "O34开头" 再做一次...
作者:
locka
(locka)
2020-09-07 14:06:00
代码N里面有可能出现033开头的值吗?
作者:
andrew43
(讨厌有好心推文后删文者)
2020-09-07 17:15:00
我觉得先把pattern字串写在一个向量,用for loop就好了最后再cbind或join
https://ideone.com/tzgHfc
作者:
JuanMaestrow
(多多)
2020-09-08 13:42:00
先gather起来变成只有一个column是代码。mutate用str_detect搭配regex。做完再speead出去就可以了
作者:
intotherain
(我不是洨母>"<)
2020-09-09 09:36:00
用across+1 很精炼的写法耶
作者:
JuanMaestrow
(多多)
2020-09-09 20:06:00
我没有叫你melt阿。gather跟spread好很多。你不要自己跑去用melt
作者:
cywhale
(cywhale)
2020-09-11 12:28:00
我不知道有无误解题意 如果pattern是有限个 比如pat=c("033","034","035"); chkhead<-function(x){matrixpat%in%substr(x,1,3)),ncol=3)} 用apply(df,1,chkhead)如果有速度需求可以拆平行做或者分批 如果内存不够?..
继续阅读
[问题] DT::datatable筛选问题
gtgrthrst
[问题] ggplot2 histogram and density问题?
vespar
[问题] (有酬)诚征LDA topic modeling高手
rebecca83
[问题] ggpattern 做图问题
vetvet
[问题] 回归的预测问题
totolink
Re: [问题] 使用windows batch用Rscript产excel
khaos
[问题] 使用windows batch用Rscript产excel
khaos
[问题] 撷取中文特定字串
love11098787
[问题] 上传Package到CRAN
ChenEye
Re: [问题] 关于平行运算
totolink
Links
booklink
Contact Us: admin [ a t ] ucptt.com