微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一次识别和更改多个值的小数位

如何解决一次识别和更改多个值的小数位

我有一个这样的数据集,但要大得多:

ds2
  Event                         act      me
<fct>                       <dbl>   <dbl>
1 Labour Costs YoY             2.33  0.0264
2 Unemployment Change (000's) -5.17 -0.449 
3 Unemployment Rate            8.86  0.0900
4 Jobseekers Net Change       11.3   9.57 

问题是第一个 me 变量应该是 2.64(所以乘以 100),而第二个需要乘以 10,第三个需要乘以 100,第四个需要保持不变。这样 actme 变量的十进制相同。

有没有办法让 R 自动识别并纠正这个问题?提前致谢。

复制数据集:

ds2 <- structure(list(Event = structure(2:5,.Label = c("Event","Labour Costs YoY","Unemployment Change (000's)","Unemployment Rate","Jobseekers Net Change"),.Names = c("","",""),class = "factor"),act = c(2.33230769230769,-5.17018867924528,8.86180371352785,11.3192307692308),me = c(0.0263725490196078,-0.449056603773585,0.0899796195652174,9.56704545454545)),row.names = c(NA,-4L),class = c("tbl_df","tbl","data.frame"))

解决方法

如果新值应该是大约相同的小数位数,您可以计算值不同的因子的对数并使用它来转换它:

ds2$conversion = round(log(ds2$act/ds2$me,10))
ds2$me.new = ds2$me * 10**ds2$conversion

这导致 data.frame:

> ds2
                        Event       act          me conversion    me.new
1            Labour Costs YoY  2.332308  0.02637255          2  2.637255
2 Unemployment Change (000's) -5.170189 -0.44905660          1 -4.490566
3           Unemployment Rate  8.861804  0.08997962          2  8.997962
4       Jobseekers Net Change 11.319231  9.56704545          0  9.567045

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。