我有一个包含 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 安培
1 字节
1 c
2 天
2 e
3层
当我一行一行地循环时,我知道该怎么做。但是可以不循环吗?
谢谢!
你签出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
> 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
你
去,应该非常快:
library(data.table)
x <- data.table(x)
x[ ,strsplit(b, ","), by = a]