我的程序要求用户提供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")
答案 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][]