从映射数据框创建列

时间:2014-07-11 07:54:50

标签: r dataframe

我有以下映射Dataframe,其中来自" model"列被分配了类型,子类型和组。

model <- c('ndev_atype', 'ndev_btype', 'ndev_ctype', 'pdev_atype', 'pdev_btype', 'pdev_ctype')
type <- c('n', 'n', 'n', 'p', 'p', 'p')
subtype <- c('type1', 'type2', 'type3', 'type1', 'type2', 'type3')
group <- c('g1', 'g1', 'g2', 'g1', 'g1', 'g2')
mapDF = data.frame(model, type, subtype, group) 

这给出了以下内容:

       model type subtype group
1 ndev_atype    n   type1    g1
2 ndev_btype    n   type2    g1
3 ndev_ctype    n   type3    g2
4 pdev_atype    p   type1    g1
5 pdev_btype    p   type2    g1
6 pdev_ctype    p   type3    g2

以下数据框捕获了我的实验:

sample=sample(1:100, 10)
measure=c('ndev_ctype', 'pdev_atype', 'pdev_ctype', 'ndev_atype', 'pdev_ctype', 'ndev_btype', 'ndev_ctype', 'ndev_atype', 'pdev_btype', 'pdev_ctype')
measureDF <- data.frame(sample, measure)

这给出了

measureDF
   sample    measure
1      94 ndev_ctype
2      34 pdev_atype
3      87 pdev_ctype
4      97 ndev_atype
5      33 pdev_ctype
6      19 ndev_btype
7      24 ndev_ctype
8      12 ndev_atype
9      77 pdev_btype
10     16 pdev_ctype 

问题:基于&#34; mapDF&#34;映射,您建议用什么来创建列&f; measureDF $ type&#39;,&#39; measureDF $ subtype&#39;和&#39; measureDF $ group&#39;列?

1 个答案:

答案 0 :(得分:1)

正如评论中所述,这是merge的问题。

由于您没有匹配的列名,因此需要指定要合并的列。

by.x”将是第一个data.frame中的列,“by.y”将是第二个data.frame中的列:

所以,你可以这样做:

merge(mapDF, measureDF, by.y = "measure", by.x = "model")

这给出了预期的结果

        model type subtype group sample
1  ndev_atype    n   type1    g1     97
2  ndev_atype    n   type1    g1     12
3  ndev_btype    n   type2    g1     19
4  ndev_ctype    n   type3    g2     94
5  ndev_ctype    n   type3    g2     24
6  pdev_atype    p   type1    g1     34
7  pdev_btype    p   type2    g1     77
8  pdev_ctype    p   type3    g2     87
9  pdev_ctype    p   type3    g2     33
10 pdev_ctype    p   type3    g2     16