我的数据基本上看起来像这样(第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等)。我可以想到效率极低且长期编码的方法,但我希望有人有一个我错过的简单或优雅的解决方案。提前谢谢!
答案 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"