我有一张桌子,它是4件东西的组合。
(function(){
angular.module('myApp',[]);
})();
(function(){
angular.module('myApp')
.controller('validateController',validateController);
function validateController(){
var vm = this;
}
})();
我想添加另一个名为位置2的列。它需要保留位置1中的值:“美国”,然后是“法国”。也就是说,我需要获取每条记录并将其乘以3。
当前,前两个记录是:
我要生成的数据框如下所示:
感谢进阶!r
答案 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)
一种简单的方法可以是将cbind
和rbind
组合使用:
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