我需要扩展一个tibble,其中一列有许多元素要拆分,但它们的长度不相同。我把原始样本和预测结果放在下面。谢谢
a;b;c | 2016
d;e | 2019
将其转换为:
a | 2016
b | 2016
c | 2016
d | 2019
e | 2019
也许使用strsplit
并将Map
与data.frame
和rbind
一起使用结果:
do.call(rbind, Map(data.frame, a=strsplit(x$a, ";", TRUE), b=x$b))
# a b
#1 a 2016
#2 b 2016
#3 c 2016
#4 d 2019
#5 e 2019
或
y <- strsplit(x$a, ";", TRUE)
data.frame(a = unlist(y), b = rep(x$b, lengths(y)))
# a b
#1 a 2016
#2 b 2016
#3 c 2016
#4 d 2019
#5 e 2019
数据:
x <- data.frame(a = c("a;b;c", "d;e"), b = c(2016, 2019))
tidyverse
溶液
样本数据
x <- data.frame(a = c("a;b;c", "d;e"), b = c(2016, 2019))
代码
tidyr::separate_rows(x, a, sep = ";")
输出
# # A tibble: 5 x 2
# a b
# <chr> <dbl>
# 1 a 2016
# 2 b 2016
# 3 c 2016
# 4 d 2019
# 5 e 2019