首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将integer64转换为R中的整数

将integer64转换为R中的整数
EN

Stack Overflow用户
提问于 2021-11-18 17:56:15
回答 1查看 1.3K关注 0票数 2

我正在研究一个几周前开始的密码。但是,(我不知道为什么)代码突然将一些列转换为integer64格式。使用这种格式,代码的其余部分不再运行,我也不熟悉integer64格式。我只想将integer64列转换为整数或数字格式。通常的命令as.numeric或as.integer不能工作。我能做什么?

这里是我的数据的一个示例

代码语言:javascript
复制
> dput(head(my_data3, n = 30))
structure(list(year = c(2007, 2009, 2011, 2012, 2005, 2017, 2001, 
2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013, 2014, 2016, 
2017, 2018, 2018, 2011, 2014, 2002, 2015, 2004, 2008, 2009, 2011, 
2012), export_value = structure(c(0, 0, 0, 0, 5.74548939548786e-319, 
3.29556607745487e-319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.20704064653743e-319, 
0, 0, 0, 3.13731685109192e-320, 3.82307996751957e-320, 0, 0, 
1.39406056696212e-318, 7.3185450052818e-319, 1.72873569479852e-320, 
7.06760906375903e-320, 1.04667807071468e-319, 2.30382810655773e-320, 
1.01915861424132e-319), class = "integer64"), location_code = c("AGO", 
"AGO", "AGO", "AGO", "MDG", "MDG", "MOZ", "MOZ", "MOZ", "MOZ", 
"MOZ", "MOZ", "MOZ", "MOZ", "MOZ", "MOZ", "MOZ", "MOZ", "MOZ", 
"MOZ", "SWZ", "SYC", "SYC", "TZA", "TZA", "ZAF", "ZAF", "ZAF", 
"ZAF", "ZAF"), partner_code = c("AFG", "AFG", "AFG", "AFG", "AFG", 
"AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", 
"AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", 
"AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG"), export_destination = c("RoW", 
"RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", 
"RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", 
"RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", "RoW", 
"RoW", "RoW"), product_group = c("Food", "Food", "Food", "Food", 
"Food", "Food", "Food", "Food", "Food", "Food", "Food", "Food", 
"Food", "Food", "Food", "Food", "Food", "Food", "Food", "Food", 
"Food", "Food", "Food", "Food", "Food", "Food", "Food", "Food", 
"Food", "Food"), exporter = c("Angola", "Angola", "Angola", "Angola", 
"Madagascar", "Madagascar", "Mozambique", "Mozambique", "Mozambique", 
"Mozambique", "Mozambique", "Mozambique", "Mozambique", "Mozambique", 
"Mozambique", "Mozambique", "Mozambique", "Mozambique", "Mozambique", 
"Mozambique", "Eswatini", "Seychelles", "Seychelles", "Tanzania", 
"Tanzania", "South Africa", "South Africa", "South Africa", "South Africa", 
"South Africa"), export_destination_country = c("Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", 
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan")), row.names = c(NA, 
-30L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x00000295b7981ef0>)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 18:28:23

integer64类由teh bit64包创建。有many questions that have arisen over the years that have been answered on SO。需要通过使用创建integer64对象的包中的函数来恢复数据而不损坏数据。

代码语言:javascript
复制
 library(bit64)
 ?integer64
 # You might imagine that as.numeric should have an integer64 method.
 # ....  but like me you would have been wrong
 #Instead, division is defined for integer64 objects and it returns a double.
 # .... so divide by 1 ( if and only if you have installed and loaded pkg:bit64

  my_data3$export_value/1
 [1]      0      0      0      0 116290  66703      0      0      0      0      0      0      0      0      0  44671
 [17]      0      0      0   6350   7738      0      0 282161 148129   3499  14305  21185   4663  20628

我之前没有注意到,as.integeras.double泛型都是为'integer64‘对象定义的,所以最好使用它们。当然,如果需要一个整数,最好从as.integer开始。

我想早期的一个或多个问题和答案可能包含了这个问题的答案,但在我看的第五个问题中,我没有遇到一个重复的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70024570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档