将两个或多个列合并为一个新列

时间:2018-09-26 14:52:24

标签: r data-manipulation

我的程序要求用户提供Excel文件的路径,将文件读取到数据框中,然后使用openxlsx将其写入新的Excel文件中。

在编写文件之前,我想将两列合并为一个新列,并删除两个原始列。 NULL值和空白单元格应被忽略

文件如下:

ID      DATE        MED_1    Direction_1     MED_2    Direction_2
12345   9/2/2015    x        a               q        t
5678    9/3/2015    y        b                        NULL
9123    9/4/2015    NULL     NULL            s        v

我想要什么:

ID      DATE       MED  Direction
12345   9/2/2015    x   a
12345   9/2/2015    q   t
5678    9/3/2015    y   b
9123    9/4/2015    s   v

编辑-解决方案 我最终按照@akrun的建议使用了melt,但是我添加了另一个id.var来保留ORDERING_DATE

# Transform wide format into long format using melt 
dm1 <- melt(data = df, id.vars = c("TCCID", "ORDERING_DATE"), measure.vars = c("MED_1", "MED_2", "MED_4"), variable.name = "MED #", value.name = "Med Name")

1 个答案:

答案 0 :(得分:0)

我们可以使用melt中的data.table

library(data.table)
melt(setDT(df1), measure = patterns("^MED", "^Direction"),
     value.name = c("MED", "Direction"), na.rm = TRUE)[, variable := NULL][]