【问题标题】:R convert df from wide to long by splitting column names [duplicate]R通过拆分列名将df从宽转换为长[重复]
【发布时间】:2018-03-19 09:32:14
【问题描述】:

我正在尝试将以下 df_original data.frame 转换为 df_goal 中的形式。原始 data.frame 中的列应被拆分,后一部分用作键,而第一部分应保留为变量名。最好我想使用一个 tidyverse 解决方案,但我对每一种方法都持开放态度。非常感谢!

df_original <- 
  data.frame(id = c(1,2,3),
           variable1_partyx = c(4,5,6),
           variable1_partyy = c(14,15,16),
           variable2_partyx = c(24,25,26),
           variable2_partyy = c(34,35,36))

df_goal <- 
  data.frame(id = c(1,1,2,2,3,3),
             key = c("partyx","partyy","partyx","partyy","partyx","partyy"),
             variable1 = c(4,14,5,15,6,16),
             variable2 = c(24,34,25,35,26,36))

【问题讨论】:

  • 例如df_original %&gt;% gather(key, value, 2:5) %&gt;% separate(key, into = c("variable", "key")) %&gt;% spread(variable, value) 完成这项工作

标签: r tidyr


【解决方案1】:
df_original %>%
  tidyr::gather(key, value, -id) %>%
  tidyr::separate(key, into = c("var", "key"), sep = "_") %>%
  tidyr::spread(var, value)

【讨论】:

  • 谢谢,完美运行。
猜你喜欢
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多