首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(dplyr)使用mutate()、case_when()和which()时出错

在使用 dplyr 包中的 mutate()case_when()which() 函数时,可能会遇到各种错误。以下是一些常见问题及其解决方法:

基础概念

  1. mutate(): 用于在数据框中添加新的变量或修改现有变量。
  2. case_when(): 类似于 SQL 中的 CASE WHEN 语句,用于根据条件创建新的变量或修改现有变量。
  3. which(): 用于返回满足条件的元素的索引。

常见错误及解决方法

错误1:条件表达式错误

问题描述:在使用 case_when() 时,条件表达式可能不正确,导致无法正确匹配。

示例代码

代码语言:txt
复制
library(dplyr)

df <- data.frame(x = c(1, 2, 3, 4))

# 错误的条件表达式
df %>% mutate(y = case_when(x > 2 ~ "greater", x < 2 ~ "less"))

解决方法: 确保所有条件都覆盖了所有可能的情况,并且没有遗漏。

代码语言:txt
复制
df %>% mutate(y = case_when(x > 2 ~ "greater", x < 2 ~ "less", TRUE ~ "equal"))

错误2:which() 返回空向量

问题描述:在使用 which() 时,可能会返回空向量,表示没有找到满足条件的元素。

示例代码

代码语言:txt
复制
df <- data.frame(x = c(1, 2, 3, 4))

# which() 返回空向量
indices <- which(df$x > 5)

解决方法: 在使用 which() 之前,确保条件有可能为真。可以使用 any()all() 检查条件。

代码语言:txt
复制
if (any(df$x > 5)) {
  indices <- which(df$x > 5)
} else {
  indices <- numeric(0)
}

错误3:mutate() 中的变量未定义

问题描述:在 mutate() 中引用的变量可能未定义或拼写错误。

示例代码

代码语言:txt
复制
df <- data.frame(x = c(1, 2, 3, 4))

# 变量未定义
df %>% mutate(z = x + y)

解决方法: 确保所有引用的变量都已正确定义。

代码语言:txt
复制
df <- data.frame(x = c(1, 2, 3, 4), y = c(5, 6, 7, 8))
df %>% mutate(z = x + y)

应用场景

  • 数据清洗:使用 mutate()case_when() 进行数据转换和条件赋值。
  • 数据分析:使用 which() 查找特定条件的索引,便于进一步分析。
  • 数据可视化:在绘图前对数据进行预处理,使用 mutate() 添加辅助变量。

示例代码

以下是一个综合示例,展示了如何正确使用 mutate()case_when()which()

代码语言:txt
复制
library(dplyr)

df <- data.frame(x = c(1, 2, 3, 4), y = c(5, 6, 7, 8))

# 使用 mutate() 和 case_when() 创建新变量
df <- df %>%
  mutate(
    category = case_when(
      x > 2 ~ "greater",
      x < 2 ~ "less",
      TRUE ~ "equal"
    )
  )

# 使用 which() 查找满足条件的索引
indices <- which(df$x > 2)

print(df)
print(indices)

通过以上方法,可以有效解决在使用 dplyr 包中的 mutate()case_when()which() 函数时遇到的常见问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

R&Python Data Science 系列:数据处理(2)

1 衍生字段函数 主要有两个函数,mutate()和transmute(),两个函数在Python和R上使用方法相同,这两个函数本身有点区别:mutate()函数保留原来所有列,然后新增一列;transmute...R语言实现 library(dplyr) library(ggplot2) library(tidyr) ##新增列x+y、x*y*z,mutate()函数 diamonds %>% mutate(x_plus_y...2 条件函数 这里介绍3个条件函数,if_else()、case_when()、between()函数,Python包dfply和R包dplyr中都是这3个函数,在用法上有点细微差别,日常中使用最多...而且if_else()函数可以嵌套使用,不过当条件判断超过2个的时候,建议使用case_when()函数。...注意:case_when函数在Python和R语言中使用的时候有点区别,请留意。

77510
  • 使用 R 语言从 PDF 文档中提取表格

    由于一个知识星球的小伙伴急需学习如何从 PDF 文档中提取表格,所以先插这个课,「使用 R 语言处理 netCDF 数据」系列的课程下次再发新的哈。...本课程介绍了如何使用 R 语言从 WHO(世界卫生组织)的官网上下载新冠疫情的每日报告以及如何从这些报告中的表格里面提取数据。...从 PDF 里面提取表格数据 我选择最新的一个 PDF 做演示:20200523-covid-19-sitrep-124.pdf,下面使用 tabulizer 包进行数据提取,不过这个包依赖于 rJava...包,因此在使用这个包之前你需要在电脑上安装 Java 和在 R 里面安装 rJava 包。...(Reporting_Country_Territory_Area = case_when( Reporting_Country_Territory_Area == "(Commonwealth

    3.7K10

    跟着Science学画图:R语言ggplot2作热图展示基因存在缺失变异(PAV)

    首先是读取数据并查看数据维度 df<-read.csv("numeric_pan_matrix.csv", row.names = 1) dim(df) 宽格式转换为长格式数据 library(dplyr...) df %>% mutate(x=1:nrow(.)) %>% select(2:27,x) %>% reshape2::melt(,id.vars="x") %>% mutate...(pav=case_when( value == 0 ~ "Absence", TRUE ~ "Presence" )) -> dfa dfa %>% count(pav) 作图...+ theme(legend.position="bottom") + theme(text = element_text(size = 12)) dev.off() 最终结果 这个图和论文中的还是有些差别的...从本科开始的T56的硬座,依次体验了T,K的硬卧,D字头硬座和二等卧,G字头的二等座,不知道啥时候可以做到乘坐商务座而不用担心价格的阶段 哈哈哈,那个时候还会焦虑吗?)

    1.3K30
    领券