繁体   English   中英

将不同大小的命名向量合并到数据框中

[英]Merge named vectors in different sizes into data frame

我有一些不同的命名向量,我想将它们组合成一个日期框架来汇总动作。

 adjust balance   drive    idle   other    pick putdown replace    sort    wait 
      4       9      16      82       4     350      61      16      26      18 
   walk 
     14 

 adjust balance   drive    idle    pick putdown replace    sort  unload    walk 
      1      42      14      47     385     118       4      83      19       7 

我希望它是这样的:

 adjust balance   drive  
      5       51      30  

等等..

我觉得这非常具有挑战性,因为这些命名向量将非常感谢您的帮助,谢谢!

我们可以使用aggregate + stack如下所示

aggregate(. ~ ind, rbind(stack(vec1), stack(vec2)), sum)

您可以转换为data.frame并使用dplyr包按名称分组并将数字相加。

library(dplyr)
vec <- c(4, 9, 16, 1, 42, 14)
names(vec) <- c("adjust", "balance", "drive", "adjust", "balance", "drive")
data.frame(values = vec, name = names(vec)) %>% group_by(name) %>% summarise(values = sum(values))

如果我们想添加两个向量之间匹配的所有元素:

# Resolve the matching names of the vectors:
# vec_nm_order => character vector
vec_nm_order <- intersect(
   names(vec1),
   names(vec2)
)

# Add the related scalars together:
# named integer vector => stdout(console)
vec1[vec_nm_order] + vec2[vec_nm_order]

如果我们只想添加调整、平衡、驱动的值:

# Choose the names (keys) of elements we want to add together:
# vec_nm_order => character vector
vec_nm_order <- c(
   "adjust", "balance", "drive"
)

# Add the related scalars together:
# named integer vector => stdout(console)
vec1[vec_nm_order] + vec2[vec_nm_order]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM