繁体   English   中英

R中的条件列拆分

[英]conditional column splitting in r

数据

该列同时包含“ a”之类的数据和“ 8a”之类的数据

一种

一种

一种

一种

8a

8a

8a

我一直试图将具有“ a”或“ 8a”值的列分为两列,以便当存在8时具有“ a”值的列和具有“ 8”的列。 我试图按位置分开,但是不管是否存在“ 8”,“ a”的位置都会变化,因此它不起作用,我不确定该怎么做。 我将不胜感激,

非常感谢你:)

我们可以使用separate 指定正则表达式环视以在数字和字母a之间的交界处拆分

library(tidyverse)
dat %>% 
   separate(initiativen, into = c('col1', 'col2'), sep= "(?<=8)(?=a)")

更一般的情况是将任意数字和任意字母分开

dat %>% 
   separate(initiativen, into = c('col1', 'col2'), sep= "(?<=[0-9])(?=[A-Za-z])")

数据

dat <- data.frame(initiativen = c('a', 'a', 'a', 'a', '8a'), 
               stringsAsFactors = FALSE)

使用基数R可以做到

dat <- data.frame(questionn = rep("008", 7),
                  initiativen = c(rep("a", 4), rep("8a", 3)),
                  stringsAsFactors = FALSE)                      


eight <- grepl("^8", dat$initiativen)
split(dat, eight)
#$`FALSE`
#  questionn initiativen
#1       008           a
#2       008           a
#3       008           a
#4       008           a
#
#$`TRUE`
#  questionn initiativen
#5       008          8a
#6       008          8a
#7       008          8a

如果只想拆分列,则将该列传递为第一个参数进行split

split(dat$initiativen, eight)
#$`FALSE`
#[1] "a" "a" "a" "a"
#
#$`TRUE`
#[1] "8a" "8a" "8a"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM