[英]A fast way to merge named vectors of different length into a data frame (preserving name information as column name) in R
[英]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.