r - 如果其他功能适用于 R
问题描述
我的数据框如下:
'data.frame': 7 obs. of 3 variables:
$ Currency : Factor w/ 3 levels "EUR","GBP","USD": 3 3 1 2 3 1 2
$ Amount.LC: int 100 500 400 200 350 100 500
$ FX.Rate : Factor w/ 3 levels "0,89","1,201",..: 2 2 3 1 2 3 1
基于“if-else”函数,我尝试计算一个名为 Amount.GC 的新列,具体取决于“EUR”是否在列 Currency 中。如果“EUR”比我想要的值与列 Amount.LC 中的值相同。否则我想划分 Amount.LC 和 FX.Rate (Amount.LC/FX.Rate)。
我的代码如下:
for (i in df$Currency){if (i == "EUR"){df$Amount.GC <- df$Amount.LC}
else{df$Amount.GC <- c(df$Amount.LC)/c(df$FX.Rate)}}
不幸的是,它不起作用。有人可以帮我吗?
解决方案
如评论中所述,您不需要forloop。您可以在 ifelse 条件中执行所有操作并将结果直接分配给新列。
df = data.frame(
Currency = sample(c("EUR", "GBP", "USD"), size = 10, replace = T),
Amount.LC = sample(c(100,200,300,400,500), size=10, replace = T),
FX.Rate = sample(c(0.89, 1.201, 1,5), size=10, replace=T)
)
df$Amount.GC = ifelse(df$Currency == "EUR", df$Amount.LC, (df$Amount.LC/df$FX.Rate))
df
推荐阅读
- php - 根据用户 id 检索数据 (CodeIgniter)
- php - 将 ZOHO API 与 Laravel 5.7 集成
- scala - 将 Guava 期货转换为 Twitter 期货
- c# - 在导入数据库之前验证 Excel 文件数据
- java - 使用 maven-jaxb2-plugin 后在 Eclipse 中生成的包名错误
- c# - 在 C# winforms 中使用 SQLite
- python - 模拟与猴子修补
- laravel - Laravel Route 无法在实时服务器上运行
- c# - 将两种不同格式 YYYYMMDD 和 DDMMYYYY 的日期字符串转换为 c# 中的日期
- c - 如何在 C 中检查给定的两个堆栈是否相等?