【发布时间】:2015-03-01 14:57:30
【问题描述】:
我有两个数据框:客人和地址。
“guests”包含人名和相应的人级数据。人们按家庭 ID 进行组织,这样同一个家庭中的多个人共享一个家庭 ID,如下所示:
## Guests data frame looks like this:
Family.ID <- c(1,1,1,2,2,3,3,3,4,4)
Names <- c("Person_A", "Person_B", "Person_C", "Person_D", "Person_E",
"Person_F", "Person_G", "Person_H", "Person_I", "Person_J")
list <- c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C")
guests <- data.frame(Family.ID, Names, list)
“addresses”包含家庭及其地址,也由家庭 ID 标记,如下所示:
## Addresses data frame looks like this:
family <- c("Person A, B, & C", "Person D & E", "Person F, G, & H", "Person I & J")
ID <- c(1,2,3,4)
address <- c("family 1's address", "family 2's address", "family 3's address", "family 4's address")
addresses <- data.frame(ID, family, address)
names(addresses) <- c("Family.ID", "Family", "Address")
我的目标是将变量 guest$list 添加到“addresses”中。我尝试像这样合并“guests”和“addresses”:
both <- merge(guests, addresses, by = "Family.ID")
从合并中,我得到:
Family.ID Names list Family Address
1 Person_A A Person A, B, & C family 1's address
1 Person_B A Person A, B, & C family 1's address
1 Person_C A Person A, B, & C family 1's address
2 Person_D A Person D & E family 2's address
2 Person_E A Person D & E family 2's address
3 Person_F B Person F, G, & H family 3's address
3 Person_G B Person F, G, & H family 3's address
3 Person_H B Person F, G, & H family 3's address
4 Person_I C Person I & J family 4's address
4 Person_J C Person I & J family 4's address
但我想得到的只是将“列表”添加到“地址”中,如下所示:
Family.ID Family Address List
1 Person A, B, & C family 1's address A
2 Person D & E family 2's address A
3 Person F, G, & H family 3's address B
4 Person I & J family 4's address C
在合并之前我需要做一些事情来重塑数据框吗?
【问题讨论】:
-
试试
unique即。unique(both[-2]) -
或者只是
merge(unique(guests[-2]), addresses, by='Family.ID')-2 是删除第二列Names,它没有显示在预期的输出中 -
谢谢!那行得通。