如何使用函数重新编码一列,该函数根据传递的参数决定将旧变量名更改为哪个名称?

library(sjstats) # has example data
library(tidyverse)
 
data(efc)

# Function to decide the name of the variable
decide_name <- function(c161sex) {
  name <- case_when(
    c161sex == 1 ~ "Male",
    c161sex == 2 ~ "Female",
    TRUE ~ "missing"
  )
  return(name)
}

根据返回值动态重新编码变量(每个数据集都有且只有一个变量"c161sex"的值)

efc_renamed <- efc %>%
    rename(decide_name = e42dep)

推荐答案

你需要的是recode(),而不是rename().

recode_dynam <- function(var) {
  recode(var, `1` = "Male", `2` = "Female", .default = "missing", .missing = "missing")
}
Test
efc_recoded <- efc %>%
  mutate(e42dep = recode_dynam(e42dep))

efc_recoded %>%
  count(e42dep)

#    e42dep   n
# 1  Female 225
# 2    Male  66
# 3 missing 617

R相关问答推荐

如何根据条件计算时差(天)

如何在R中合并和合并多个rabrame?

在R中将特定列的值向右移动

Rplotly中的Sankey Diagram:意外连接&

使用列/行匹配将两个不同维度的矩阵相加

以更少间隔的较小表中的聚合离散频率表

使用data.table::fcase()而不是dplyr::case_When()时保持值

基于R中的间隔扩展数据集行

按时间顺序对不同事件进行分组

为什么在BASE R中绘制线条时会看到线上的点?

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

根据另一列中的值和条件查找新列的值

使用geom_iles在一个切片中包含多个值

如果条件匹配,则使用Mariate粘贴列名

计算使一组输入值最小化的a、b和c的值

防止正则表达式覆盖以前的语句

如何调整一个facet_work()面板内的框图和移动标签之间的水平宽度?

整理ggmosaic图的标签

将日期列从字符转换为日期得到的结果是NAS

如何在用`{{ }}`创建的变量上使用整洁 Select ?