簡體   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