使用 R 重塑数据

Posted

技术标签:

【中文标题】使用 R 重塑数据【英文标题】:Reshape Data using R 【发布时间】:2016-07-12 08:16:00 【问题描述】:

我是 R 新手,我有如下数据

NAME
----
Balachandra
Sunita
Kali
Jagmeet

我想把它做成

NAME1       NAME2
-----------------------
Balachandra Balachandra
Balachandra Sunita
Balachandra Kali
Balachandra Jagmeet    
Sunita      Balachandra
Sunita      Sunita
Sunita      Kali
Sunita      Jagmeet    
Kali        Balachandra
Kali        Sunita
Kali        Kali
Kali        Jagmeet    
Jagmeet     Balachandra
Jagmeet     Sunita
Jagmeet     Kali
Jagmeet     Jagmeet    

拥有所有可能的名称组合

知道怎么做吗?

【问题讨论】:

请勿以图片形式发布您的数据,请了解如何提供reproducible example 当然,我会确保不将数据添加为图像 【参考方案1】:

我们可以使用expand.grid

expand.grid(NAME1=df1$NAME, NAME = df1$NAME)[2:1]
#      NAME         NAME1
#1  Balachandra Balachandra
#2  Balachandra      Sunita
#3  Balachandra        Kali
#4  Balachandra     Jagmeet
#5       Sunita Balachandra
#6       Sunita      Sunita
#7       Sunita        Kali
#8       Sunita     Jagmeet
#9         Kali Balachandra
#10        Kali      Sunita
#11        Kali        Kali
#12        Kali     Jagmeet
#13     Jagmeet Balachandra
#14     Jagmeet      Sunita
#15     Jagmeet        Kali
#16     Jagmeet     Jagmeet

或使用CJ 来自data.table

library(data.table)
setDT(df1, key = "Name")[CJ(Name, Name)]

数据

df1 <- data.frame(NAME = c("Balachandra", "Sunita", "Kali", 
               "Jagmeet"), stringsAsFactors=FALSE)

【讨论】:

谢谢@akrun...这就是我要找的...但是[2:1] 在expand.grid 中是什么意思? @Vinay 我只是在重新排列列。因此,2:1 将获得第二列第 1 列和第 1 列第 2 列,以匹配您的预期输出

以上是关于使用 R 重塑数据的主要内容,如果未能解决你的问题,请参考以下文章

R语言学习 第十三篇:利用reshape2包重塑数据

如何使用 R lattice 重塑堆积条形图的数据 [重复]

R包重塑函数融化错误:使用很多因素时在数据中找不到id变量

如何重塑 R 中的相关输出(非透视结果数据)?

R 中的重塑问题:我重塑的数据框将 3 个变量变为 1 个

r 在R中重塑数据