我有以下映射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;列?
答案 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