[英]Separate string to columns by each character
在我的數據框中,我有一列這樣的長字符串
df$string
AVDSFBKLDF
我需要的是分隔每個字符並為其創建新列。 列的名稱是q1,q2,依此類推。 對於類似的情況,例如按符號分割字符串並將其放入新列中,我使用了此代碼
df %>% separate(string, into = paste0('q', 1:10), sep = "")
它工作正常,但是現在當我想按每個字符分割字符串時,控制台出現空白警告,我的代碼不起作用。
data.table
包提供您可能考慮的功能tstrsplit
。
a<- c("AVDSFBKLDF", "GH", "ABCD")
library(data.table)
DT <- data.table(a)
DT_wide <- DT[, tstrsplit(a, "")]
# change column names
setnames(DT_wide, paste0("q", seq_len(ncol(DT_wide))))
DT_wide
# q1 q2 q3 q4 q5 q6 q7 q8 q9 q10
#1: A V D S F B K L D F
#2: G H <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
#3: A B C D <NA> <NA> <NA> <NA> <NA> <NA>
如果要繼續使用數據setDF(DT_wide)
,請在最后鍵入setDF(DT_wide)
。
使用下面的代碼。 我已經使用了Stringr包的str_split_fixed函數來創建新列。
a<- c("AVDSFBKLDF")
library(stringr)
d<- data.frame(str_split_fixed(a, "", max(nchar(a))))
我希望這有幫助
您可以嘗試:
df<- data.frame(string=c("ABCDEF","GH"))
df %>% mutate(v=str_split(string,"(?=.)")) %>% unnest %>%
filter(v!="") %>%
group_by(string) %>% mutate(k=paste0("q",row_number())) %>% ungroup %>%
spread(k,v)
## A tibble: 2 x 7
# string q1 q2 q3 q4 q5 q6
# <fct> <chr> <chr> <chr> <chr> <chr> <chr>
#1 ABCDEF A B C D E F
#2 GH G H <NA> <NA> <NA> <NA>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.