r - 如何使用 gsub 和 grep 计算 R 中的加权平均值?
问题描述
我想计算不同名称的不同列的加权平均值。比如weight4乘以3,weight8乘以2,weight12乘以1,然后我们把所有的数相加除以6。这是一个例子,我的真实数据有53个变量,每一个都是measure在变量末尾的数字表示的不同时间范围内。这是我的数据集
weight4 <- c(4,2,3,4,5,6)
height4 <- c(4,2,3,3,5,8)
size4 <- c(2,3,5,6,2,3)
weight8 <- c(4,2,3,4,5,6)
height8 <- c(4,2,3,3,5,8)
size8 <- c(2,3,5,6,2,3)
weight12 <- c(4,2,3,4,5,6)
height12 <- c(4,2,3,3,5,8)
size12 <- c(2,3,5,6,2,3)
df <- data.frame(weight4, height4, size4, weight8, height8, size8,
weight12, height12, size12)
我想计算这些列的加权平均值:这就是我到目前为止
Z <- unique(gsub("\\..", "", grep("^\\[0-9]+$", names(df), value = TRUE)))
Z
new <- lapply(setNames(nm = Z), function(z) {
Zs <- grep(paste0("^", z, "\\"), names(df))
Zs_seq <- rev(seq_along(Zs))
as.matrix(df[Zs]) %*% matrix(Zs_seq, ncol = 1) / sum(Zs_seq)
})
但它不适用于我的数据。关于如何为我的数据更改此功能的任何想法?
这行代码适用于每个变量:
weight <- grep("weight", names(df))
Xs_seq <- rev(seq_along(weight))
weight <- as.matrix(df[weight]) %*% matrix(Xs_seq, ncol = 1) / sum(Xs_seq)
df$weight <- weight
我想知道是否有一种方法可以让 R 在数据中查找模式,而无需手动使用数据框中的每个变量
解决方案
推荐阅读
- excel - 我可以在制作 Visual Basic Excel 宏以将摩尔斯电码转换为英语语言方面获得帮助吗?反之亦然
- java - 将位图保存到 android 画廊
- r - R中的变量声明
- c++ - 将 std::shared_ptr 传递给线程并立即超出范围
- swiftui - 当视图从“应用程序设置”返回更改通知设置时如何触发“onAppear”方法?
- arrays - 查找不同的数组是否具有相同的元素并打开警报
- python - 如何让我的 Tkinter Simpledialog 位于顶部?
- javascript - 点击 iframe 中的链接后的 Puppeteer 页面内容
- python - 如何检测点击了哪个按钮?(拼音)
- python - 为什么我的尝试无法捕捉到“6”-“7”的两种模式?_Sum67_python 编码