在data.frame中的列中打开并合并列表 [英] Unpacking and merging lists in a column in data.frame
本文介绍了在data.frame中的列中打开并合并列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下 data.frame
:
id name altNames
1001 Joan character(0)
1002 Jane c("Janie", "Janet", "Jan")
1003 John Jon
1004 Bill Will
1005 Tom character(0)
列 altNames
可以是空的(即字符(0)),只有一个名称或名称列表。我想要的是一个 data.frame
(或一个列表),其中每个条目从 name
和/或 altNames
只显示一次以及相应的 id
,如下所示:
The column altNames
could be empty (i.e. character(0)), have just one name, or a list of names. What I want is a data.frame
(or a list) where each entry from name
and/or altNames
appears just once along with the corresponding id
, like this:
id name
1001 Joan
1002 Jane
1002 Janie
1002 Janet
1002 Jan
1003 John
1003 Jon
1004 Bill
1004 Will
1005 Tom
最有效的方法是什么?更好的是使用 dplyr
。
谢谢
What's the most efficient way of doing it? Even better is dplyr
is utilized.
Thanks
编辑:这里是数据:
df <- data_frame(
id = c("1001", "1002","1003", "1004", "1005"),
name = c("Joan", "Jane", "John", "Bill", "Tom"),
altNames = list(character(0), c("Janie", "Janet", "Jan"), "Jon", "Will", character(0))
)
推荐答案
一个可能的 data.table
方法
library(data.table)
setDT(dat)[, .(name = c(name, unlist(altNames))), by = id]
# id name
# 1: 1001 Joan
# 2: 1002 Jane
# 3: 1002 Janie
# 4: 1002 Janet
# 5: 1002 Jan
# 6: 1003 John
# 7: 1003 Jon
# 8: 1004 Bill
# 9: 1004 Will
# 10: 1005 Tom
这篇关于在data.frame中的列中打开并合并列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文