r语言 - 将不同大小的命名向量合并到数据帧中



我有一些不同的命名向量,我想把它们组合成一个日期框架,把所有的动作加起来。

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]

最新更新