r - 为 R 中的每个时间点创建一个新变量
问题描述
我有一个广泛的数据集,其中包含在不同时间点测量的变量。每个变量在数据集中都有许多列,列末尾的数字表示收集数据的时间点(例如 a.1、a.2、a.3 等)。我想为每个时间点创建一个新变量,对相同的变量使用相同的公式。我怎样才能通过仅使用一个应用于每个时间点的公式来编写此代码,而不是为每个时间点重复相同的代码,如下例所示?
df$a.1 <- (df$b.1 + df$c.1)/2
df$a.2 <- (df$b.2 + df$c.2)/2
df$a.3 <- (df$b.3 + df$c.3)/2
df$a.4 <- (df$b.4 + df$c.4)/2
谢谢
解决方案
我们可以对b
列进行子集化,获取相应的c
列并取平均值并分配回新列,向paste
量化以及+
/
df[paste0("a.", 1:4)] <- (df[paste0("b.", 1:4)] + df[paste0("c.", 1:4)])/2
也可以across
通过循环遍历“b”列,然后get
是相应的“c”列并更改名称.names
以创建新列
library(dplyr)
library(stringr)
df <- df %>%
mutate(across(starts_with('b.'), ~
(. + get(str_replace(cur_column(), 'b', 'c')))/2,
.names = "{str_replace(.col, 'b', 'a')}"))
推荐阅读
- gremlin - 如何找到与其他顶点共享许多连接的顶点
- java - 为什么 jmap -histo 的结果与 jmap -dump 不同
- android - 需要将 recyclerview 单击的项目 id 传递给第二个 recyclerview
- symfony - Symfony 4 - 供应商捆绑包找不到标记的自动接线服务
- nginx - NGINX:在 access_log 中混淆密码
- shell - 需要 cronjob 来备份、压缩和开发空文件
- java - 设计文档 api java
- .net-core - 无法在 Rider 中禁用某些 stylecop 规则
- php - 动态外键的数据库关系
- windows - 使用 WiX 在安装时启动外部服务