[英]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.