如何将具有重复列名称的数据帧重新整形为行?

时间:2017-05-17 05:53:06

标签: r dataframe multiple-columns

我有一个数据集(已从.json文件导入),目前看起来像这样:

ID <- c(1)
Name <- c("John")
Name.1 <- c("Irene")
Address <- c("1 Brick Lane")
Address.1 <- c("2 Wood Street")

df <- data.frame(ID, Name, Name.1, Address, Address.1)

ID     |  Name |   Address    | Name.1 | Address.1
------ | ------|   ------     | ------ | ------
1      | John  | 1 Brick Lane | Irene  | 2 Wood Street

但是,我想操纵它看起来像这样:

ID <- c(1)
Name <- c("John", "Irene")
Address <- c("1 Brick Lane", "2 Wood Street")

df <- data.frame(ID, Name, Address)

ID     |  Name |   Address    
------ | ------|   ------     
1      | John  | 1 Brick Lane 
1      | Irene | 2 Wood Street

此外,并非所有人都拥有相同的信息字段。例如,John的出生日期可能在数据中,但Irene不是。

在我的实际数据集中,最终数据框中将有大约30个不同的列。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我们可以使用来自melt的{​​{1}},data.table可以采用多种measure模式

library(data.table)
melt(setDT(df), measure = patterns("^Name", "^Address"),
      value.name = c("Name", "Address"))[, variable := NULL][]
#   ID  Name       Address
#1:  1  John  1 Brick Lane
#2:  1 Irene 2 Wood Street