r - 将数据帧的特定部分与两个条件 r 相乘
问题描述
我有一个看起来像这样的数据集,称为Data
:
Country Region Code Product name Year Value
Sweden Stockholm 123 Apple 1991 244
Sweden Kirruna 123 Apple 1987 100
Japan Kyoto 543 Pie 1987 544
Denmark Copenhagen 123 Apple 1998 787
Denmark Copenhagen 123 Apple 1987 100
Denmark Copenhagen 543 Pie 1991 320
Denmark Copenhagen 126 Candy 1999 200
Sweden Gothenburg 126 Candy 2013 300
Sweden Gothenburg 157 Tomato 1987 150
Sweden Stockholm 125 Juice 1987 250
Sweden Kirruna 187 Banana 1998 310
Japan Kyoto 198 Ham 1987 157
Japan Kyoto 125 Juice 1987 550
Japan Tokyo 125 Juice 1991 100
我想要做的是将value
(销售)转换为欧元相对于特定country
和year
. 为此,我有一个数据文件,其中包含特定的汇率country
和year
(也已根据通货膨胀进行调整):
Exchange_rates <- read_excel("Data/Exchange_rates.xlsx", col_types = c("numeric", "text", "numeric")) #year, country, value
为了获得我需要的价值country
,year
我使用以下代码:
Convert_exchage_rate <- function(Specific_Country, Specific_Year) {
Specific_exchange_rate <- subset(Exchange_rates, Country == Specific_Country)
Specific_exchange_rate <- subset(Specific_exchange_rate, Year == Specific_Year)
Specific_exchange_rate <- as.matrix(Specific_exchange_rate[3]) #gets the specific rate for the specific year
Data <- ??? * Specific_exchange_rate[1] #here comes my question
}
Convert_exchage_rate("Sweden","1987")
我的问题是我不知道如何使用 R 仅将where和(以及上面的函数)中value
的条目相乘。我知道如何将值列与 相乘,但现在如何有条件地使用两个条件。Data
"Country == Sweden"
"Year = 1987"
Specific_Country
Specific_Year
Data$Value <- Data$Value * Specific_exchange_rate[1]
(稍后我将创建一个循环来在所有年份和所有国家/地区运行我的函数Data
,但我不想编写这部分代码,直到我可以让它在特定年份在一个特定国家/地区工作)
解决方案
在函数的注释行中,您可以执行
Data$Value[Data$Country == Specific_Country & Data$Year == Specific_Year] <-
Data$Value[Data$Country == Specific_Country & Data$Year == Specific_Year] * Specific_exchange_rate[1]
这应该很容易解释:您选择与您的 Specific_Country 和 Specific_Year 匹配的特定 Data$Value。
您可以通过执行以下操作来避免循环
Data <- merge(Data, Exchange_rates, by=c('Country','Year'))
Data$Value_in_eur <- Data$Specific_exchange_rate * Data$Value
推荐阅读
- sparql - 维基数据 SPARQL 查询。并非结果中的所有属性
- swift - 从 PHPickerViewController 查看内存泄漏
- android - 不幸的是,Flutter App 停止工作,出现无法启动活动 ComponentInfo 错误
- javascript - 跳过 Dhee.ai 网络小部件中的姓名和电话号码屏幕
- html - “配置文件”对象不可迭代
- closedxml - 如何使 ClosedXML 不会断词?
- azure-devops - 在 Azure Boards 中将所有史诗及其孩子分配给我
- android - 如何找出 Jetpack WorkManager 中任务失败的原因?
- sql - SQL - 选择子句中的子选择 - 如何创建决定唯一性逻辑的列
- delphi - 如何在 Delphi 中执行类似于 C# Invoke() 的操作?