データ フレーム内の 1 つの長い行として取得した人の可変リストがあり、これらのレコードをより意味のある形式に再編成することに関心があります。
私の生データは次のようになります。
df <- data.frame(name1 = "John Doe", email1 = "John@Doe.com", phone1 = "(444) 444-4444", name2 = "Jane Doe", email2 = "Jane@Doe.com", phone2 = "(444) 444-4445", name3 = "John Smith", email3 = "John@Smith.com", phone3 = "(444) 444-4446", name4 = NA, email4 = "Jane@Smith.com", phone4 = NA, name5 = NA, email5 = NA, phone5 = NA)
df
# name1 email1 phone1 name2 email2 phone2
# 1 John Doe John@Doe.com (444) 444-4444 Jane Doe Jane@Doe.com (444) 444-4445
# name3 email3 phone3 name4 email4 phone4 name5
# 1 John Smith John@Smith.com (444) 444-4446 NA Jane@Smith.com NA NA
# email5 phone5
# 1 NA NA
私はそれをこのような形式に曲げようとしています。
df_transform <- structure(list(name = structure(c(2L, 1L, 3L, NA, NA), .Label = c("Jane Doe",
"John Doe", "John Smith"), class = "factor"), email = structure(c(3L,
1L, 4L, 2L, NA), .Label = c("Jane@Doe.com", "Jane@Smith.com",
"John@Doe.com", "John@Smith.com"), class = "factor"), phone = structure(c(1L,
2L, 3L, NA, NA), .Label = c("(444) 444-4444", "(444) 444-4445",
"(444) 444-4446"), class = "factor")), .Names = c("name", "email",
"phone"), class = "data.frame", row.names = c(NA, -5L))
df_transform
# name email phone
# 1 John Doe John@Doe.com (444) 444-4444
# 2 Jane Doe Jane@Doe.com (444) 444-4445
# 3 John Smith John@Smith.com (444) 444-4446
# 4 <NA> Jane@Smith.com <NA>
# 5 <NA> <NA> <NA>
reshape2
常に 5 レコードであるとは限らず、1 から 99 までの任意の数になる可能性があることを付け加えておく必要がありますmelt
。私が単に知らない知っている方法があると思います。