我在xls文件中有一些13位数字,并且我使用Excel生成了csv文件,因为我需要在R中对其进行处理。然后,当R读取csv文件时,它无法识别大数字。例如,1329100082670在R中看起来像1.329E + 12,并且失去了精度。我试图将大数字格式化为Excel中的文本格式,然后将其另存为csv,但这没有用!
提前致谢!
我有一个像这样的矩阵:
>>D=[1,0,10;3,1,12;3,1,12.5;6,1,6;6,2,11.1;]
D =
1.0000 0 10.0000
3.0000 1.0000 12.0000
3.0000 1.0000 12.5000
6.0000 1.0000 6.0000
6.0000 2.0000 11.1000
Run Code Online (Sandbox Code Playgroud)
如果第一列的数据相同,我想得到第二列数据的总和.例如,我想要:
E=
1.0000 0
3.0000 2.0000
6.0000 3.0000
Run Code Online (Sandbox Code Playgroud)
所以我试过了
b = accumarray(D(:,1),D(:,2),[],[],[],true);
[i,~,v] = find(b);
E = [i,v]
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我该怎么办?
我正在读一个csv文件,其中包含一些非常大的数字,如1327707999760,但是R会自动将其转换为1.32771e + 12.我试图给它分配一个双类,但它不起作用,因为它已经是一个舍入值.我查过了保存大数字等其他帖子.人们说"它不是"1.67E + 12格式",它只是不会完全使用默认值打印.R正好读它,整个数字就在那里." 但是当我试图对它们做一些算术运算时,这是不对的.例如:
test[1,8]
[1] 1.32681e+12
test[2,8]
[1] 1.32681e+12
test[2,8]-test[1,8]
[1] 0
Run Code Online (Sandbox Code Playgroud)
但我知道他们是不同的数字!
例如,我有两个变量a和b.他们都是数字.我想检查他们是否有相同的标志(正面或两面都是负面的)或者它们有不同的标志.如果其中一个是0(它们不能都是0),那么我认为它们是不同的签名.我知道我可以写
if (a*b<=0) ...
Run Code Online (Sandbox Code Playgroud)
但我不认为这是一个好方法,因为a和b都是大数字,R给出警告:
Warning message:
In b[i - 1, 4] * b[i, 4] :NAs produced by integer overflow
Run Code Online (Sandbox Code Playgroud)
提前致谢!