我有数据集,我需要调整通货膨胀的多个变量。它看起来像这样。
我需要把这些都放在一个恒定的格式中(比如2020美元)。我可以用< code>priceR包中的< code > adjust _ for _ inflation 函数很容易地做到这一点。然而,有很多价格变量,所以我想自动创建它们。我一直在尝试使用< code > cross ,但它不起作用。以下是我一直在尝试的。
library(tidyverse)
library(priceR)
#this is it done manually, which would take hours
df %>% mutate(adjusted_price1=adjust_for_inflation(price1,year,"US",to_date = 2020))
#here's my attempt to do it all at once
price.vars <- df %>% select(-year) %>% names()
dollars2020 <- function(x){
y <- adjust_for_inflation(x,year,"US",to_date = 2020)
}
df <- df %>%
mutate(across(price.vars, dollars2020,.names ="adjusted_{col}"))
据我所知,这应该是一个新变量的列表,名称为<code>adjusted_price1</code>等等。但它不起作用。我非常感谢任何人能给我的帮助。
只是命名部分不好用吗?如果是这样,那就把{col}改成{. col}
也许这对你有用。我没有使用自定义函数,而是将<code>adjust_for_inflation
密码
library(dplyr)
library(priceR)
price.vars <- df %>% select(-year) %>% names()
df %>% mutate(across(price.vars, ~ adjust_for_inflation(.x, year, "US", to_date = 2020), .names = "adjusted_{col}"))
输出
# A tibble: 3 x 9
year price1 price2 price3 price4 adjusted_price1 adjusted_price2 adjusted_price3 adjusted_price4
<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2003 1.15 1.15 1.16 1.17 1.62 1.62 1.64 1.65
2 2004 1.17 1.16 1.18 1.18 1.60 1.59 1.62 1.62
3 2005 1.17 1.17 1.18 1.18 1.55 1.55 1.57 1.56
数据
df <- tibble(fread("year price1 price2 price3 price4
2003 1.149 1.149 1.163 1.172
2004 1.169 1.164 1.184 1.18
2005 1.167 1.166 1.183 1.178"))
问题不在于您在中使用,而是您的函数。首先,您将一个名为
年份
的变量传递给不存在的adjust_for_inflation
。其次,您的函数不返回任何东西。如果您将其更改为:
dollars2020 <- function(x){
adjust_for_inflation(x, 2022,"US",to_date = 2020)
}
您将获得:
df %>%
mutate(across(price.vars, dollars2020,.names ="adjusted_{col}"))
#> year price1 price2 price3 price4 adjusted_price1 adjusted_price2 adjusted_price3 adjusted_price4
#> 1 2003 1.149 1.149 1.163 1.172 1.134999 1.134999 1.148828 1.157719
#> 2 2004 1.169 1.164 1.184 1.180 1.154755 1.149816 1.169572 1.165621
#> 3 2005 1.167 1.166 1.183 1.178 1.152779 1.151792 1.168585 1.163645
我需要帮助完成一项看似简单的任务。我想基于< code>dplyr::mutate中的一个条件创建几个新变量。我可以使用< code>ifelse创建一个新变量,但是我想一步创建几个。 让我们假设这是我的数据帧。 我想要这样的东西: 因此,if条件应该基于条件< code>y创建三个新变量 我想与< code>if_else和< code>case_when一起使用。 谢谢转发
问题内容: 所以,我不确定那是什么。如果在 ModuleA中 ,我有: 在 ModuleB中 ,我有: 在主程序中,我有: 因此,当我运行主程序时,我想我将创建两个猫鼬“实例”;一个连接到pathA,一个连接到pathB,对吗? 另外,在模块B中,在我连接到pathB之前,它是连接到pathA还是什么都没有? 谢谢。 问题答案: 我刚刚对最新的节点V0.4.6做了一些测试。我确认了以下内容: 从“
我有一个命名的数据帧列表。我需要用数据帧的名称为每个数据帧创建一个新变量,这样我最终就可以将它们全部rbind起来,以生成统计数据和绘图。 我知道lapply不会传递对象的名称,也知道有很多类似问题的帖子,但我无法将我看到的任何解决方案适用于我的特定问题。 这是我第一次尝试的方法,但显然不起作用,因为names(x)不会返回对象的名称。 TestList<-list(a=data.frame(Va
考虑这个简单的例子: 在这里,我想将函数应用于包含的所有列,但我希望这些新列称为对应列的。 我知道我能做到 但我需要的是这个 有没有一种解决方案不需要存储中间数据,并合并回原始数据帧?
是否可以在同一事务中使用Cloud FiRecovery针对集合创建多个文档? 我正在查看批处理写入的留档。除非我弄错了(我是Firebase的新手,可能是这样),这些示例旨在演示“批处理写入”,但示例仅显示正在更新的单个字段。
问题内容: 所以我的任务听起来很简单,但是却使我感到困惑。我已经浏览了Internet上的代码,但无法掌握。我也无法掌握老师张贴的幻灯片。这是我的要求。 创建一个新的运行时异常类型,称为EmptyStackException。 但是,我不知道如何制作方法,类,变量或满足要求所需的任何内容。我有一些类是DynamicArrayStack和LinkedStack的实现。堆栈的接口。 任何指针将大有帮助