【发布时间】:2021-08-20 14:36:46
【问题描述】:
我想在数据集中创建一个新变量,它是使用 dplyr mutate 在数据集中已经存在的变量的第一个差异。
我正在使用示例数据 MaunaLoa
MaunaLoa = read.csv("http://course1.winona.edu/bdeppa/FIN%20335/Datasets/CO2%20Mauna%20Loa.csv")
当我只是转换变量时,命令 dplyr 起作用:
MaunaLoa <- dplyr::mutate(MaunaLoa, lnCO2 = log(CO2))
但如果我试图创建一个新变量,它是现有变量的第一个区别:
MaunaLoa <- dplyr::mutate(MaunaLoa, CO2_diff = diff(CO2), na.omit=TRUE)
我收到以下错误消息:
CO2_diff must be size 468 or 1, not 467
有什么我可以指定不让它崩溃的吗?
【问题讨论】:
-
错误信息给出了线索:长度为 n 的向量只产生 (n-1) 个差异。
dplyr不能明智地回收它。解决方案很简单:提供一个额外的价值。由于 tibble 的 first 行没有前任,因此将此行的差异设置为NA。所以:MaunaLoa <- dplyr::mutate(MaunaLoa, CO2_diff = c(NA, diff(CO2))).