R 将数据帧连接到列表

R 将数据帧连接到列表,r,excel,merge,excel-2013,R,Excel,Merge,Excel 2013,我在Excel中有一些行名称及其各自的出版物 Name Pub AAAA MNWP AAAA TIWD BBBB CGWK BBBB MNWP CCCC EXWE CCCC EXWE CCCC HXWT CCCC MDWE CCCC MDWE CCCC MNWP CCCC MNWP CCCC NDWK DDDD MNWP EEEE EXWE EEEE TIWE 基本上,

我在Excel中有一些行名称及其各自的出版物

Name    Pub
AAAA    MNWP 
AAAA    TIWD 
BBBB    CGWK 
BBBB    MNWP 
CCCC    EXWE 
CCCC    EXWE 
CCCC    HXWT 
CCCC    MDWE 
CCCC    MDWE 
CCCC    MNWP 
CCCC    MNWP 
CCCC    NDWK 
DDDD    MNWP 
EEEE    EXWE 
EEEE    TIWE 
基本上,我希望列表采用以下形式:

AAAA: MNWP, TIWD
BBBB: CGWK, MNWP
CCCC: EXWE, HXWT, MDWE, MNWP, NDWK, TIWE
DDDD: MNWP
EEEE: EXWE, TIWE
有没有办法以上述格式合并此列表?
Excel
R
(最好是Excel)

一种方法是

x <- read.table(text = "Name    Pub
AAAA    MNWP 
AAAA    TIWD 
BBBB    CGWK 
BBBB    MNWP 
CCCC    EXWE 
CCCC    EXWE 
CCCC    HXWT 
CCCC    MDWE 
CCCC    MDWE 
CCCC    MNWP 
CCCC    MNWP 
CCCC    NDWK 
DDDD    MNWP 
EEEE    EXWE 
EEEE    TIWE ", header = TRUE)

aggregate(Pub ~ Name, data = x, FUN = paste)

  Name                                            Pub
1 AAAA                                     MNWP, TIWD
2 BBBB                                     CGWK, MNWP
3 CCCC EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK
4 DDDD                                           MNWP
5 EEEE                                     EXWE, TIWE
x一种方法是

x <- read.table(text = "Name    Pub
AAAA    MNWP 
AAAA    TIWD 
BBBB    CGWK 
BBBB    MNWP 
CCCC    EXWE 
CCCC    EXWE 
CCCC    HXWT 
CCCC    MDWE 
CCCC    MDWE 
CCCC    MNWP 
CCCC    MNWP 
CCCC    NDWK 
DDDD    MNWP 
EEEE    EXWE 
EEEE    TIWE ", header = TRUE)

aggregate(Pub ~ Name, data = x, FUN = paste)

  Name                                            Pub
1 AAAA                                     MNWP, TIWD
2 BBBB                                     CGWK, MNWP
3 CCCC EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK
4 DDDD                                           MNWP
5 EEEE                                     EXWE, TIWE
xR中的另一个选项:

library(dplyr)
df %>% 
  group_by(Name) %>%
  summarise(Pub = paste(Pub, collapse =", "))

#Source: local data frame [5 x 2]
#
#  Name                                            Pub
#1 AAAA                                     MNWP, TIWD
#2 BBBB                                     CGWK, MNWP
#3 CCCC EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK
#4 DDDD                                           MNWP
#5 EEEE                                     EXWE, TIWE
R中的另一个选项:

library(dplyr)
df %>% 
  group_by(Name) %>%
  summarise(Pub = paste(Pub, collapse =", "))

#Source: local data frame [5 x 2]
#
#  Name                                            Pub
#1 AAAA                                     MNWP, TIWD
#2 BBBB                                     CGWK, MNWP
#3 CCCC EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK
#4 DDDD                                           MNWP
#5 EEEE                                     EXWE, TIWE

使用
数据表

library(data.table)
setDT(dat)[, list(Group=paste(Pub, collapse=", ")), by=Name][,paste(Name, Group, sep=": ")]
#[1] "AAAA: MNWP, TIWD"                                    
#[2] "BBBB: CGWK, MNWP"                                    
#[3] "CCCC: EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK"
#[4] "DDDD: MNWP"                                          
#[5] "EEEE: EXWE, TIWE"             

使用
数据表

library(data.table)
setDT(dat)[, list(Group=paste(Pub, collapse=", ")), by=Name][,paste(Name, Group, sep=": ")]
#[1] "AAAA: MNWP, TIWD"                                    
#[2] "BBBB: CGWK, MNWP"                                    
#[3] "CCCC: EXWE, EXWE, HXWT, MDWE, MDWE, MNWP, MNWP, NDWK"
#[4] "DDDD: MNWP"                                          
#[5] "EEEE: EXWE, TIWE"             

您能否为样本数据提供完整的所需输出?例如,这些CCCC行的期望输出是什么?为什么?你有一个有用的格式,想要转换成一些不太有用的东西来处理。如果你真的想要一个
列表
,你可以使用
split(DF$Pub,DF$Name)
@Roland,我怀疑他们是否真的想要一个
列表
(如R中所定义)因为他们更喜欢Excel解决方案,而且据我所知,Excel不支持R中的列表结构。@初学者,我根本不清楚他们需要什么。现在看来,最好编写一个打印方法。您能为示例数据提供完整的所需输出吗?例如,这些CCCC行的期望输出是什么?为什么?你有一个有用的格式,想要转换成一些不太有用的东西来处理。如果你真的想要一个
列表
,你可以使用
split(DF$Pub,DF$Name)
@Roland,我怀疑他们是否真的想要一个
列表
(如R中所定义)因为他们更喜欢Excel解决方案,而且据我所知,Excel不支持R中的列表结构。@初学者,我根本不清楚他们需要什么。现在看来最好写一个打印方法。