如何使用新变量联接数据框?

时间:2018-07-17 20:33:59

标签: r

我有一张桌子,它是4件东西的组合。

(function(){
 angular.module('myApp',[]);
})();

(function(){ 
  angular.module('myApp')
  .controller('validateController',validateController);

  function validateController(){
   var vm = this;    
  }
})();

我想添加另一个名为位置2的列。它需要保留位置1中的值:“美国”,然后是“法国”。也就是说,我需要获取每条记录并将其乘以3。

当前,前两个记录是:

picture of first records is here.

我要生成的数据框如下所示:

picture of what I want data to look like

感谢进阶!r

3 个答案:

答案 0 :(得分:2)

仅以基数R:

# add columns
new_vals = c("USA", "France")
result = rbind(
  merge(combos, data.frame(place2 = new_vals), all = TRUE),
  transform(combos, place2 = place1)
)

# order result rows and columns
with(result, result[order(place1, race1, race2, cancer, place2), c("place1", "place2", "race1", "race2", "cancer")])
#         place1     place2 race1 race2  cancer
# 134 California     France  Hisp  Hisp   Liver
# 53  California        USA  Hisp  Hisp   Liver
# 215 California California  Hisp  Hisp   Liver
# 107 California     France  Hisp  Hisp    Lung
# 26  California        USA  Hisp  Hisp    Lung
# 188 California California  Hisp  Hisp    Lung
# ...

答案 1 :(得分:1)

使用tidyverse

library(tidyverse)
combos %>%
  mutate(place2 = map(place1,list,"USA","France")) %>%
  unnest
#         place1 race1 race2  cancer     place2
# 1      Florida   NHW   NHW    Lung    Florida
# 2      Florida   NHW   NHW    Lung        USA
# 3      Florida   NHW   NHW    Lung     France
# 4   California   NHW   NHW    Lung California
# 5   California   NHW   NHW    Lung        USA
# 6   California   NHW   NHW    Lung     France
# 7      Georgia   NHW   NHW    Lung    Georgia
# 8      Georgia   NHW   NHW    Lung        USA
# 9      Georgia   NHW   NHW    Lung     France
# 10     Florida   NHB   NHW    Lung    Florida
# 11     Florida   NHB   NHW    Lung        USA
# ...

答案 2 :(得分:0)

一种简单的方法可以是将cbindrbind组合使用:

rbind(cbind(combos, place2 = combos$place1),
      cbind(combos, place2 = "USA"),
      cbind(combos, place2 = "France"))

#        place1 race1 race2  cancer     place2
# 1     Florida   NHW   NHW    Lung    Florida
# 2  California   NHW   NHW    Lung California
# 3     Georgia   NHW   NHW    Lung    Georgia
# 4     Florida   NHB   NHW    Lung    Florida
#
# so on 239 more rows