R 将数据帧连接到列表
我在Excel中有一些行名称及其各自的出版物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 基本上,
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中的列表结构。@初学者,我根本不清楚他们需要什么。现在看来最好写一个打印方法。