我想将向量中的每个字符串分成列,但我做不到!
library(tidyr)
library(dplyr)
df <- data.frame(x = c("abe", "bas", "dds", "eer"))
df %>% separate(x, c("A", "B", "C"), sep=1)
我想要的输出看起来像这样
A B C
1 a b e
2 b a s
3 d d s
4 e e r
sep=1 适用于 2 个字符,但不适用于 3 个字符。我希望有一个像 sep="." 这样的正则表达式。或 sep="[a-z]" 也可以工作,但事实并非如此。
这可能非常简单,但我是 R 新手。请有人帮忙吗!
Method 1
使用积极的后视separate
:
df %>%
separate(x, c("A", "B", "C"), sep = "(?<=.)", extra = "drop")
# A B C
#1 a b e
#2 b a s
#3 d d s
#4 e e r
请注意,这仅在每个字符串都有效x
恰好由三个字符组成。
Method 2
Use strsplit
:
df %>%
mutate(tmp = strsplit(as.character(x), "")) %>%
unnest() %>%
group_by(x) %>%
mutate(n = 1:n()) %>%
spread(n, tmp) %>%
ungroup() %>%
select(-x)
## A tibble: 4 x 3
# `1` `2` `3`
# <chr> <chr> <chr>
#1 a b e
#2 b a s
#3 d d s
#4 e e r
这也将允许字符串x
不同长度,通过填充列NA
如果需要的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)