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

为R中的多个列创建if/then和if/else循环,以便年化美元值?

在R中为多个列创建if/then和if/else循环以计算年化美元值,通常涉及到条件逻辑和循环控制。以下是一个基本的示例,说明如何为数据框中的多个列应用这样的逻辑。

假设我们有一个数据框df,其中包含多个代表投资回报的列,我们想要基于某些条件计算年化美元值。

代码语言:txt
复制
# 创建一个示例数据框
df <- data.frame(
  investment = c(1000, 2000, 3000),
  rate_of_return = c(0.05, -0.02, 0.10), # 正值代表盈利,负值代表亏损
  duration_in_months = c(12, 6, 24)
)

# 定义一个函数来计算年化美元值
annualized_dollar_value <- function(investment, rate_of_return, duration_in_months) {
  if (rate_of_return >= 0) {
    # 如果回报率为正或零,使用复利公式计算年化值
    annual_rate <- (1 + rate_of_return)^(12 / duration_in_months) - 1
    return(investment * (1 + annual_rate))
  } else {
    # 如果回报率为负,可能需要考虑不同的计算方法或假设
    # 这里我们简单地返回投资减去按比例计算的亏损
    loss <- investment * abs(rate_of_return) * (duration_in_months / 12)
    return(investment - loss)
  }
}

# 应用函数到数据框的每一行
df$annualized_value <- apply(df[, c("investment", "rate_of_return", "duration_in_months")], 1, annualized_dollar_value)

# 查看结果
print(df)

在这个例子中,我们定义了一个函数annualized_dollar_value,它接受投资金额、回报率和投资时长作为参数,并根据回报率是正还是负来计算年化美元值。然后,我们使用apply函数将这个函数应用到数据框的每一行。

请注意,这个例子假设了回报率为正时的年化计算方法,并为回报率为负时提供了一个简单的处理方式。在实际应用中,你可能需要根据具体情况调整这些计算方法。

如果你遇到了具体的问题,比如计算结果不符合预期,可能的原因包括:

  1. 回报率或投资时长的数据类型不正确(例如,应该是数值型而不是字符型)。
  2. 计算公式本身有误。
  3. 数据中存在缺失值或异常值。

解决这些问题通常需要检查数据的完整性和准确性,以及验证计算逻辑的正确性。可以使用R中的is.numeric()函数检查数据类型,使用summary()str()函数检查数据结构,以及通过逐步调试代码来定位问题所在。

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

相关·内容

在几秒钟内将数千个类似的电子表格文本单元分组

(或者在命名,“多个文档”)。...这将返回具有余弦相似度成对矩阵,如: 然后将通过相似性阈值(例如0.75或0.8)过滤此矩阵,以便对认为代表相同实体字符串进行分组。...在第39-43行,遍历坐标矩阵,非零拉出行索引 - 记住它们都具有超过0.8余弦相似性 - 然后将它们转换为它们字符串。 为了澄清,通过一个简单示例进一步解开第39-43行。...矢量化Panda 最后,可以在Pandas中使用矢量化功能,将每个legal_name映射到GroupDataFrame并导出新CSV。...最后一点 如果希望按两或更多而不是一进行分组,则可以创建一个临时以便在DataFrame对每个连接成单个字符串条目进行分组: columns_to_group = ['legal_name

1.8K20

数据分析从零开始实战 | 基础篇(四)

默认将返回页面上包含所有标签包含表格。 该将转换为正则表达式,以便Beautiful SoupLXML之间一致。...我理解 少用,默认0,表示删除包含缺少行;1,表示删除包含缺少。...我理解 默认any,表示如果存在任何NA(空),则删除该行或all,表示如果全都是NA,则删除该行或。...我理解 其实很简单,就是按搜索空,然后limit表示最大连续填充空个数。 比如:limit=2,表示一从上到下搜索,只替换前两个空,后面都不替换。...位列第二是中国,占了43人,也是特别多,而且对于中国,发展到现在是非常非常不容易,从1949成立,到今年2019,建国70,从“中华之崛起而读书”到“实现中国梦、建设富强民主文明和谐美丽社会主义现代强国而奋斗

1.3K20
  • 手把手教你用R处理常见数据清洗问题(附步骤解析、R语言代码)

    给定一个集合或赌博数据库(格式逗号分隔或CSV文本文件),其中包括数据如老虎机位置、钱面额、月份、日、、机器类型、机器年龄、促销、优惠券、天气投币量(投币量是放入机器钱币总额减去支付数额...") 注:Coin-in是文件第11,所以直接将它作为boxplot函数参数。...它将数据字段分成三部分(月、日)然后按照理想顺序(/分隔符(sep))粘贴在一起,如下截图所示: 我们发现这一行脚本将日期字段转换为字符类型,最后我们可以用as.Date函数将重设为日期(Date...,但以上代码说明了创建逻辑要点,以便我们今后可以重复使用: 最终,为了使整个过程更完美,我们要将函数储存(在R文档以便将来使用: source("C:/GammingData/CurerncyLogic.R...centerTRUE是需要对应行减去Coin.in均值(省略NA)。scale决定了如何行缩放(在中心之后)。

    7.3K30

    入门 | 简易指南带你启动 R 语言学习之旅

    通过一系列内建函数库,你可以用 R 语言学习数据可视,特别是它还有很多图形前端。本文将简单介绍 R 语言编程基础,带你逐步实现第一个可视案例。...)、一组原子向量或多个 R 对象组合。...原子向量不同,列表变量不局限于单一数据类型,可以包含任意数据类型混合。一个列表可以包含其它列表。 R 语言中列表可以用 list() 函数创建。...矩阵是数据元素以二维矩形排布集合,矩阵有行。 现在我们创建一个 2x2 矩阵,使用 matrix 函数并以行列作为参数。行数以 nrow 表示,数以 ncol 表示。...R 语言为了创建数据储存可视儿提供了最好内置函数库。

    1.9K40

    Bash 编程

    例如: math_lines=$(cat math.sh | wc -l) echo $math_lines # 7 带有美元符号变量名也可以在其他字符串中使用,以便将变量插入到字符串: echo...WHILE循环确实是编程结构“里斯花生酱杯”,它结合了部分FOR循环IF语句。让我们看一个WHILE循环例子,这样你就可以明白我意思了: #!...在前一节addseq命令,我们该命令提供了一个数字序列,然后该命令我们提供了该序列,这是我们感兴趣。在本例,我们可以看到addseq基于一些输入计算了一个。...如果成功,这些命令不会打印任何。 我们经常会编写函数来计算某个,理解如何将函数结果存储在变量以便以后使用是很重要。...-- 1 sean sean 146 Jun 26 14:45 addseq2.sh -rw-rw-r-- 1 sean sean 140 Jan 29 10:06 bigmath.sh 该表包含一系列单独字符破折号

    4.4K30

    Python3分析CSV数据

    do something else满足某个条件 pandas提供loc函数,可以同时选择特定行与。...需要在逗号前设定行筛选条件,在逗号后设定筛选条件。 例如,loc函数条件设置:Supplier Name姓名包含 Z,或者Cost大于600.0,并且需要所有的。...for循环,在一个输入文件集合迭代,并使用glob模块os模块函数创建输入文件列表以供处理。...下面的代码演示了如何对于多个文件某一计算这两个统计量(总计均值),并将每个输入文件计算结果写入输出文件。 #!...,然后使用数据框函数将此对象转换为DataFrame,以便可以使用这两个函数计算总计均值。

    6.6K10

    Excel VBA解读(141): 自定义函数性能改进示例

    一个区域而不将其作为参数传递,因此如果P任何更改,该函数可能会给出错误答案,因为Excel不会重新计算它。...Pedro已完成此操作,以便这个用户定义函数可以动态调整到P条目数。 这个函数运行速度慢原因: 每次调用该函数时,它会在P中找到最后一行最大,但这只需要做一次。...35040次调用将触及VBE刷新减速Bug,所以需要绕过它。 For循环引用P每个单元格(使用R2(j))两次。对单元格每个引用都很慢,因为每次调用Excel对象模型都会产生很大开销。...(另一种方法是P创建动态命名区域并将其作为参数传递)。 为了解决前两个使速度变慢问题,该用户定义函数将被制作成数组公式自定义函数,返回35040结果数组。...为了避免在循环内两次引用P每个单元格,该函数将从P获取所有一次,变为变体数组,然后在该变体数组上循环

    1.4K20

    1.基础知识(1) --Matlab基础知识

    1.1.3 关键特性 ü 用于科学工程计算高级语言; ü 迭代开发、设计和解决问题而优化桌面环境; ü 用于可视数据图形用于创建自定义图表工具; ü 用于曲线配合、数据分类、信号分析、控制系统调优等任务应用...例如,列出 A 第 1 行第 2 元素: A(1:3,2) ans = 3×1 2 11 7 仅冒号(没有起始 start 或结束 end)是指定该维度所有元素。...例如,选择 A 第三行所有: A(3,:) ans = 1×5 9 7 6 12 0 冒号运算符还允许您使用更通用形式 start:step:end 创建一个等间距向量。...subplot 函数前两个参数表示每一行每一数量。第三个参数指对应第几个图处于活动状态,即可编辑状态。例如,在 figure 窗口内 2×2 网格创建四幅图。...输入一些代码,可以创建一个单位球面,半径两个单位长度,然后绘制结果: [x,y,z] = sphere; r = 2; surf(x*r,y*r,z*r) axis equal 接下来,添加计算球体表面积体积代码

    2.8K20

    用 Pandas 做 ETL,不要太快

    ETL 是数据分析基础工作,获取非结构或难以使用数据,把它变为干净、结构数据,比如导出 csv 文件,后续分析提供数据基础。...列名称列表,以便从主数据帧中选择所需。...一种比较直观方法是将 genres 内分类分解多个,如果某个电影属于这个分类,那么就在该赋值 1,否则就置 0,就像这样: 现在我们用 pandas 来实现这个扩展效果。...item in sublist] 接下来,我们创建一个 genres_all 临时,作为电影类别的代表,我们只需要 genres 内 name 属性,稍后把它扩展单独: result =...,使用了 explode、crosstab 函数来扩展多个,其效果就是如果电影属于某个类型,该行就为 1,结果就是这样: 关于日期时间,我们希望将日期扩展、月、日、周,像这样: 那么以下代码就是干这个

    3.2K10

    机器学习之基于PCA的人脸识别

    mat2gray函数用于将图像数据转换为灰度范围0-1之间以便正确显示。...创建空矩阵trainDatatestData,用于存储训练数据测试数据。 使用两个循环,将样本数据按连接,并存储到trainDatatestData。...每个循环迭代15次,每次连接11个样本。 创建空矩阵result,用于存储不同k维度下识别率。 使用两个嵌套循环,分别遍历k维度范围。...在每次循环中,选择相应数量特征向量,将训练数据测试数据投影到这些特征向量上,得到降维后数据。 初始误差error0,并计算训练数据测试数据数量。...使用waterfall函数绘制不同k维度下识别率瀑布图,横轴维度范围,纵轴k,瀑布图高度表示识别率。 使用plot函数绘制不同维度下平均识别率曲线。

    23320

    浩抒己见(回复私信):一个程序员水平能差到什么程度?

    据我所知,大概就是,一个if循环19.8亿次,而且7没人敢动.... 真事,就出现在知名游戏大厂R知名大作 GTA 5 。...sscanf功能是读取格式字符串数据,而在GTA 5,它正在读取是一个10M左右,有63000多个条目的JSON文件。 这个文件到底是干什么用?...但是保存前,有一个if语句,逐一比较item内项目的哈希,检查它们是否出现在某一。 按照他计算,这一步if,要执行(63000^2+63000)/2 = 1984531500次!...在黑客大哥联系后,R星认可了他改进方法,宣布在后续更新修复相关问题,并且还慷慨给他付了一笔1万美元奖金。 ?...鉴于R星失误实在太低级太离谱,而这位老哥方法又太有效,以致无数玩家称他“功德无量”。 如果平均给每个玩家节省10秒,全球500万玩家一天就能节约5000万秒,一,节约总时间大概能有数十

    49220

    awk命令详解

    awk在20世纪70代诞生与贝尔实验室。现在使用版本是1988发布Gnu awk。...二、基础语法 2.1.记录与字段 awk是一种处理文本文件编程语言,文件每行数据都被称为记录,默认以空格或制表符分隔符,每条记录被分成若干字段(),awk每次从文件读取一条记录。...文件名 2.2.内置变量 awk语法由一系列条件动作组成,在花括号内可以有多个动作,多个动作之间用分号分隔,在多个条件动作之间可以有若干空格,也可以没有。...,作为字符处理时未定义变量默认空,作为数字处理时未定义变量默认0 awk 'BEGIN{print "["x"]","["y"]"}' #xy默认为空 awk 'BEGIN{print...这里面包含了两个循环,一个是隐含循环,awk会逐行处理数据;一个是for循环,如果等于root,就让x自加1,最后打印x 4.3.while循环 语法: while(条件判断){

    2.3K30

    如何使用Python创建美观而有见地图表

    用GapminderWikipedia信息丰富了《世界幸福报告》数据,以便探索新关系可视。...报告幸福定义对“ Cantril阶梯问题”回答,要求被调查者以0到10等级评估他们今天生活,最糟糕寿命为0,最可能寿命为10。 在整篇文章,将Life Ladder用作目标变量。...看看如何在一个图表单个变量或多个变量生成分布。...左图:2018亚洲国家“救生梯”直方图核密度估计;右图:人均5桶GDP“生命阶梯”内核密度估计-钱可以买到幸福 绘制双变量分布 每当想直观地探索两个或多个变量之间关系时,通常都归结为某种形式散点图分布评估...FacetGrid允许创建按变量分段多个图表。例如,行可以是一个变量(人均GDP类别),可以是另一个变量(大陆)。

    3K20

    零基础学Java(8)数组

    通过一个整型下标(index,或称索引)可以访问数组每一个。例如,如果a是一个整型数组,a[i]就是数组中下标i整数。...如果程序运行需要经常扩展数组大小,就应该使用另一种数据结构—数组列表(array list) 在Java,提供了一种创建数组对象并同时提供初始简写形式。...它会统计初始个数,并相应地设置数组大小。可以使用这种语法重新初始一个数组而无须创建新变量。...循环语句显得更加简洁、更不易出错,因为你不必下标的起始终止而操心。...因此,这里用数组最后一个数覆盖number[r],并将n减1。 numbers[r] = numbers[n - 1]; n--;   关键在于每次抽取都是下标,而不是实际

    63620

    Python编程 基础练习(四)

    continue 4. numpy数组操作 创建一个 10x10 随机数组,里面每个元素 0-100 整数,求它最大与平均值 已知列表[[4,2,8,1],[7,5,9,6],[1, 2, 3..., 10)) # 生成 10x10 随机数组 里面每个元素0-100整数 print(s) # 格式输出 print(f'最大:{np.max(s)}') print(f'平均值:{np.mean...(如果r是负数,则以右侧距离-r圆心蛇皮走位(半径,旋转角度) t.circle(50, 2 * 30) t.circle(-50, 2 * 30) t.circle(50,...文件操作 下面是一个传感器采集数据文件sensor-data.txt一部分。其中,每行是一条记录,逗号分隔多个属性。属性包括日期、时间、温度、湿度、光照、电压。其中,温度处于第3。...con[1:]] # 第一行列名 不要 # 格式输出结果 print('温度平均值:{:.2f}'.format(sum(temp) / len(temp))) 运行结果如下: 温度平均值

    80960

    R星认可黑客方案,还给他发了1万美元奖金

    鉴于R星失误实在太低级太离谱,而这位老哥方法又太有效,以致无数玩家称他“功德无量”。 如果平均给每个玩家节省10秒,全球500万玩家一天就能节约5000万秒,一,节约总时间大概能有数十。...相当于挽救了十多个生命! R星这才坐不住了,赶忙官宣修复bug,不但采用了黑客方案,还大方给他奖励了1万美元“赏金”。...sscanf功能是读取格式字符串数据,而在GTA 5,它正在读取是一个10M左右,有63000多个条目的JSON文件。 这个文件到底是干什么用?...但是保存前,有一个if语句,逐一比较item内项目的哈希,检查它们是否出现在某一。 按照他计算,这一步if,要执行(63000^2+63000)/2 = 1984531500次!...因为,这篇揭R星老底帖子在全网大火,R星不得不出面应对。 在和他联系后,R星认可了他改进方法,宣布在后续更新修复相关问题,并且还慷慨给他付了一笔1万美元奖金。

    2.5K20

    翻译:The Log-Structured Merge-Tree (LSM-Tree)

    每笔交易都会从三个表每一个表更新一个,从余额随机选择一行(包含100个字节)提取金额增量:分支表(包含1000行)、柜员表(包含10000行)账户表(包含100000000行);然后,事务在提交之前将一个...在此后8(1987至1995,速率每年上升不到10%,因此标称速率现在约为每秒40 I/O,或每秒2000 I/O50个磁盘臂。...寻找使给定R总输入/输出速率H最小ri是一个标准微积分最小问题。结果表明,总大小S固定假设导致了一个相当困难问题,ri之间存在某种复杂递归关系。...等式(3.7)可以改写:K(3.8)H=(2R/Sp)(∑ ri+K-)1.K我们希望在以下条件下最小该函数:∏ri=(SK/S0)=C,a1.K K-1常数为了解决这个问题,我们最小∑ri,...根据得到r=S1/S0=460S1=9.2 GB事实,我们计算出C0内存为20MB,成本2000美元。这是简单s=t解决方案,总成本11200美元,充分利用了磁盘容量I/O能力。

    93450
    领券