r - R 在不应该的时候返回 NaN
问题描述
我想计算作为总收入的一部分的转移份额(转移+工资)。然而,R 返回 NaN,即使它在数学上不应该。
我的数据结构是一个数据框,看起来与此类似(我总共有 500.000 行和 50 列):
我目前的代码对于上面的示例数据框如下所示:
df$transfershare <- (rowSums(df[,c(2,4,6)])/rowSums(df[,c(2,4,6,3,5,7)]))*100
基于:
Transfershare = total transfer / (total transfer + total salary)*100
转会总额为转会2012-2014年之和,工资总额为2012-2014年转会之和。
问题是,在运行此代码之前,我的 df 有 0 个缺失值,但在运行后它突然有 3000。我读过如果某些东西除以 0,通常会发生 NaN,但在此数据中没有观察值应该除以 0放。因此,我在想,我可能在代码中做错了什么?
解决方案
我没有收到任何错误:
df <- data.frame(id= c(1,2,3,4), Transfer2012 = c(200,0,0,300), Salary2012 = c(0,300,0,200), Transfer2013 = c(200,250,200,300),
Salary2013 = c(0,0,0,0), Transfer2014 = c(200,0,0,200), Salary2014 = c(0,300,0,0))
id Transfer2012 Salary2012 Transfer2013 Salary2013 Transfer2014 Salary2014
1 1 200 0 200 0 200 0
2 2 0 300 250 0 0 300
3 3 0 0 200 0 0 0
4 4 300 200 300 0 200 0
df$transfershare <- (rowSums(df[,c(2,4,6)])/rowSums(df[,c(2:7)]))*100
id Transfer2012 Salary2012 Transfer2013 Salary2013 Transfer2014 Salary2014 transfershare
1 1 200 0 200 0 200 0 100.00000
2 2 0 300 250 0 0 300 29.41176
3 3 0 0 200 0 0 0 100.00000
4 4 300 200 300 0 200 0 80.00000
您是否确认您的变量是数字的?
str(df)
'data.frame': 4 obs. of 7 variables:
$ id : num 1 2 3 4
$ Transfer2012: num 200 0 0 300
$ Salary2012 : num 0 300 0 200
$ Transfer2013: num 200 250 200 300
$ Salary2013 : num 0 0 0 0
$ Transfer2014: num 200 0 0 200
$ Salary2014 : num 0 300 0 0
推荐阅读
- express - Https 代码:html 文件在哪里提供?
- java - java.sql.SQLException:用户“root”@“localhost”的访问被拒绝。无法创建与数据库服务器的连接
- vba - 从 VBA 代码运行 excel 文件后返回 Access 表单
- css - 在 ReactJS 中使用网格模板列,内联样式
- swift - 在 SwiftUI 中点击更改按钮背景颜色
- syslog - RSyslog 未知优先级名称
- cluster-analysis - DBSCAN 的 ELKI 实现中的 sample_weight 选项
- java - Mockito 返回 null:需要模拟的多个外部依赖项
- javascript - 函数调用中的 this 关键字
- c++ - 如何在 MFC 对话框应用程序中将复选框设置为默认选中?