R数据表添加来自不同行的列
假设我有这个数据表:R数据表添加来自不同行的列,r,dataframe,data.table,R,Dataframe,Data.table,假设我有这个数据表: Name | Pet | Hobby | Sibling ------------------------------------------ Bob | Dog | Running | Linda Ross | Cat | Hiking | Howie Linda | Mouse | Beaches | Bob Howie | Plant | Gaming | Ross 接下来,我想将兄弟姐妹的信息添加到同一行。表中列出了兄弟姐妹的
Name | Pet | Hobby | Sibling
------------------------------------------
Bob | Dog | Running | Linda
Ross | Cat | Hiking | Howie
Linda | Mouse | Beaches | Bob
Howie | Plant | Gaming | Ross
接下来,我想将兄弟姐妹的信息添加到同一行。表中列出了兄弟姐妹的信息。因此,基本上您会找到兄弟姐妹的行,并将兄弟姐妹的行“Pet”和“Hobby”附加到该行中
Name | Pet | Hobby | Sibling | Sibling's Pet | Sibling Hobby's
-----------------------------------------------------------------
Bob | Dog | Running | Linda | Mouse | Beaches #Cols appended from Row 3 above
Ross | Cat | Hiking | Howie | Plant | Gaming #Cols appended from Row 4 above
Linda | Mouse | Beaches | Bob | Dog | Running #Cols appended from Row 1 above
Howie | Plant | Gaming | Ross | Cat | Hiking #Cols appended from Row 2 above
我们使用
match
创建一个索引,然后使用该索引创建列
i1 <- with(df1, match(Name, Sibling))
df1[paste0("Siblings_", c("Pet", "Hobby"))] <- lapply(df1[2:3], function(x) x[i1])
df1
# Name Pet Hobby Sibling Siblings_Pet Siblings_Hobby
#1 Bob Dog Running Linda Mouse Beaches
#2 Ross Cat Hiking Howie Plant Gaming
#3 Linda Mouse Beaches Bob Dog Running
#4 Howie Plant Gaming Ross Cat Hiking
i1以下是一种使用自连接和引用更新的data.table方法:
dt[dt, on = c("Sibling" = "Name"), `:=`(sib_pet = i.Pet, sib_hob = i.Hobby)]
# Name Pet Hobby Sibling sib_pet sib_hob
#1: Bob Dog Running Linda Mouse Beaches
#2: Ross Cat Hiking Howie Plant Gaming
#3: Linda Mouse Beaches Bob Dog Running
#4: Howie Plant Gaming Ross Cat Hiking
谢谢,这是我最喜欢的解决方案!