【问题标题】:repeat records data.table R based on dimensions values基于维度值重复记录data.table R
【发布时间】:2021-11-30 03:39:56
【问题描述】:

我有一个数据集以这种方式构造数据

dt<- data.table(
item=c("G,S,GS","G,S"),
timePeriod=c("1995:2000","2006),
refArea = c("DE,SE","DE,SE,SK,SI")
)

结果是这样的:

test2 <- data.table(
  item=c("G","G","S","G","G","G","G"),
  timePeriod=c("1995","1995","1995","1995","2006","2006","2006"),
  refArea = c("DE","SE","DE","SE","DE","SE","SK")
)

我没有把所有的行。 事实上,我认为我应该在某处使用 expand.grid。

我怎么能这样做? 谢谢

【问题讨论】:

  • 不清楚您对此有何期望。你能展示你的预期输出吗?例如,您是否希望扩展任何分隔值,例如 "G,S,GS" --> c("G", "S", "GS")"1995:2000" --> c(1995,1996,1997,...,2000)
  • 还是只需要do.call(expand.grid, dt)
  • 也许从修复您的可重现示例开始。

标签: r data.table repeat dimensions


【解决方案1】:

感谢 r2evans,确实会成功的。

do.call(expand.grid, dt)
#     item timePeriod     refArea
# 1 G,S,GS  1995:2000       DE,SE
# 2    G,S  1995:2000       DE,SE
# 3 G,S,GS       2006       DE,SE
# 4    G,S       2006       DE,SE
# 5 G,S,GS  1995:2000 DE,SE,SK,SI
# 6    G,S  1995:2000 DE,SE,SK,SI
# 7 G,S,GS       2006 DE,SE,SK,SI
# 8    G,S       2006 DE,SE,SK,SI

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多