【问题标题】:Convert columns to rows repeat common values [duplicate]将列转换为行重复常见值[重复]
【发布时间】:2019-02-17 22:23:45
【问题描述】:

好人,我有一个数据框,我想将其从 dataframe1 转换为 dataframe2

dataframe1 <- data.frame(Company_Name = c("KFC", "McD"), 
                 Company_ID = c(1,  2),
                 Company_Phone = c("237389", "237002"),
                 Employee = c("John", "Joshua" ),
                 ID = c(1001, 2001),
                 Employee = c("Mary", "Anne"),
                 ID = c(1002, 2002),
                 Employee = c("Jane", ""),
                ID = c(1003, ""))

dataframe2 <- data.frame(Company_Name = c("KFC", "KFC", "KFC", "McD", "McD"), 
                      Company_ID = c(1, 1, 1, 2, 2),
                      Company_Phone = c("237389", "237389", "237389", "237002", "237002"),
                      Employee = c("John", "Mary", "Jane", "Joshua", 
                                        "Anne"),
                     ID = c(1001, 1002, 1003, 2001, 2002))

到目前为止我尝试了什么:

   cbind(dataframe1[1], stack(dataframe1[-1]))

  stack(dataframe2) 

没有得到所需的输出。任何帮助或见解将不胜感激。

【问题讨论】:

  • library(tidyverse); dataframe1 %&gt;% gather(var, val, -contains("Company")) %&gt;% separate(var, c('var', 'i'), fill = 'right') %&gt;% spread(var, val) %&gt;% select(-i) %&gt;% filter(Employee != "")

标签: r reshape melt


【解决方案1】:

使用来自data.tablemelt,带有patterns函数

library(data.table)
melt(setDT(dataframe1),measure = patterns("^Employee","^ID"),value.name = c("Employee","Employee_ID"))[Employee != ""]


   Company_Name Company_ID Company_Phone variable Employee Employee_ID
1:          KFC          1        237389        1     John        1001
2:          McD          2        237002        1   Joshua        2001
3:          KFC          1        237389        2     Mary        1002
4:          McD          2        237002        2     Anne        2002
5:          KFC          1        237389        3     Jane        1003

【讨论】:

    猜你喜欢
    • 2015-08-06
    • 2016-09-22
    • 1970-01-01
    • 2022-01-20
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多