将data.frame / matrix中的单个项放入由组组织的新data.frame中

时间:2014-05-19 15:16:10

标签: r dataframe grouping

我的数据基本上看起来像这样(第2行和第3行只是为了让它成为1列格式,这就是我原始数据的格式化方式):

temp1 <- c("AB","CC","bC","aB","Ba","ac","Bb","Ac")
temp2 <- t(temp1)
dat1 <- t(temp2)

我想将这些数据放入一个新的data.frame中,如下所示:

   Red Blue Yellow Purple Green Orange
1   Ac  aB    CC     AB           ac                 
2       Ba    bC                               
3       Bb                                        

根据以下标准将原始列表中的元素放入颜色列:

AA = Red
AB = Purple
Bc = Blue
etc, etc, etc

唯一的区别是我的列表包含50多种类型(AA,Aa,aA等)。我可以想到效率极低且长期编码的方法,但我希望有人有一个我错过的简单或优雅的解决方案。提前谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,data.frame似乎是一个不正确的数据结构来存储结果。 Data.frames期望矩形数据,其中每行包含每列的数据。在这种情况下,列表似乎是更好的选择。我会像这样创建一个命名的重新分配向量

reassign<-c(Ac="Red",aB="Blue",Ba="Blue", Bb="Blue", 
    CC="Yellow",bC="Yellow", AB="Purple", ac="Orange")

您可以使用

分割数据
split(temp1, reassign[temp1])

返回一个看起来像

的列表
$Blue
[1] "aB" "Ba" "Bb"

$Orange
[1] "ac"

$Purple
[1] "AB"

$Red
[1] "Ac"

$Yellow
[1] "CC" "bC"