我有一个包含2个字符列的数据框x:
x <- data.frame(a = numeric(), b = I(list()))
x[1:3,"a"] = 1:3
x[[1, "b"]] <- "a, b, c"
x[[2, "b"]] <- "d, e"
x[[3, "b"]] <- "f"
x$a = as.character(x$a)
x$b = as.character(x$b)
x
str(x)
b列中的条目是逗号分隔的字符串。 我需要生成这个数据框:
1 a
1 b
1 c
2 d
2 e
3 f
我知道当我逐行循环时如何做到这一点。但是没有循环可以做到吗?
谢谢!
答案 0 :(得分:1)
你签出了require(splitstackshape)
吗?
> cSplit(x, "b", ",", direction = "long")
a b
1: 1 a
2: 1 b
3: 1 c
4: 2 d
5: 2 e
6: 3 f
答案 1 :(得分:0)
> s <- strsplit(as.character(x$b), ',')
> data.frame(value=rep(x$a, sapply(s, FUN=length)),b=unlist(s))
value b
1 1 a
2 1 b
3 1 c
4 2 d
5 2 e
6 3 f
答案 2 :(得分:0)
library(data.table)
x <- data.table(x)
x[ ,strsplit(b, ","), by = a]