R:当一列的条目数不相等时,重塑数据框

  • 本文关键字:不相等 数据 一列 r reshape
  • 更新时间 :
  • 英文 :


我有一个包含 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]

最新更新