【问题标题】:melt data frame and split values融化数据框和拆分值
【发布时间】:2016-09-26 19:52:23
【问题描述】:

我有以下数据框,其测量值连接成一列,由一些分隔符分隔:

df <- data.frame(v1=c(1,2), v2=c("a;b;c", "d;e;f"))
df
     v1 v2
  1  1  a;b;c
  2  2  d;e;f;g

我想把它融化/转换成以下格式:

     v1 v2
  1  1  a
  2  1  b
  3  1  c
  4  2  d
  5  2  e
  6  2  f
  7  2  g

有没有优雅的解决方案?

谢谢!

【问题讨论】:

  • V2 的每一行中是否总是有相同数量的项目(在您的示例中为 3)?
  • 不可以有 0..n 个值

标签: r


【解决方案1】:

你可以用strsplit分割字符串。

拆分第二列的字符串:

splitted <- strsplit(as.character(df$v2), ";")

创建一个新的数据框:

data.frame(v1 = rep.int(df$v1, sapply(splitted, length)), v2 = unlist(splitted))

结果:

  v1 v2
1  1  a
2  1  b
3  1  c
4  2  d
5  2  e
6  2  f

【讨论】:

  • 这是我遇到的最有效的解决方案,不需要任何包。
猜你喜欢
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
相关资源
最近更新 更多