r - 如何为数据框的子集重新编码多个变量?
问题描述
我迷路了,所以任何方向都会有所帮助。假设我有一个数据框:
df <- data.frame(
id = 1:12,
v1 = rep(c(1:4), 3),
v2 = rep(c(1:3), 4),
v3 = rep(c(1:6), 2),
v4 = rep(c(1:2), 6))
我的目标是为变量 v3 和 v4 重新编码 2=4 和 4=2,但仅针对前 4 种情况(id < 5)。我正在寻找一种适用于多达 20 个变量的解决方案。我知道如何进行基本的重新编码,但我没有看到一种在操作多个变量时实现子集条件的简单方法。
解决方案
你可以mutate_at
试试case_when
dplyr
library(dplyr)
df %>%
mutate_at(vars(v3:v4), ~case_when(id < 5 & . == 4 ~ 2L,
id < 5 & . == 2 ~ 4L,
TRUE ~.))
# id v1 v2 v3 v4
#1 1 1 1 1 1
#2 2 2 2 4 4
#3 3 3 3 3 1
#4 4 4 1 2 4
#5 5 1 2 5 1
#6 6 2 3 6 2
#7 7 3 1 1 1
#8 8 4 2 2 2
#9 9 1 3 3 1
#10 10 2 1 4 2
#11 11 3 2 5 1
#12 12 4 3 6 2
您可以指定要应用mutate_at
该功能的列范围。
推荐阅读
- java - okhttp3:无法创建新的本机线程
- python - 在 Odoo 10 中,当我使用名为“create”的方法创建记录时,如何在 create_date、create_uid 中指定数据而不是系统中的值
- openedge - 如何动态地将值添加到正在进行的 ocx 组合框 4gl
- c# - 如何在我的 Web 应用程序的文件夹中填充网页的下拉列表?
- html - 用于激活侧边栏的 Laravel 辅助方法
- python - 使用python创建fishet网格
- angular - 我们可以使用 webpack 来决定在构建时使用业务配置在应用程序中提供哪些组件吗?
- nvidia - 如何优先处理jetson nano交换文件
- jmeter - aritmetic operation of csv data config value in jmeter
- machine-learning - 实时流视频的人脸识别预测问题