【问题标题】:Deleting decimals in big datatables删除大数据表中的小数
【发布时间】:2015-05-28 13:38:28
【问题描述】:

我有一个包含大约 100 万行和几列的数据表。某列每行有 7 位数字。我需要使用前一行数字的前 5 个数字创建一个新列。

例子:

第 1 列 = 8312990

第 2 列 = 83129

为此,我将第 1 列除以 100,现在我需要删除十进制值。我曾尝试使用“round”和“format”,但似乎它们最多只能处理 10k 行。

我还使用了“options (digits=0)”,它最初是有效的。但是,我无法使用我想要的数字(5 位)对行进行子集化,所以我怀疑这只是一个显示设置,小数点仍然存在。

关于如何从数据表中的 100 万行中删除十进制值的任何想法?非常感谢。

【问题讨论】:

  • 从你的例子看来你想要floor(8312990/100)。您确定 10k 行不仅仅是控制台的最大打印量吗?
  • @Richard Scriven:楼解决了我的问题,谢谢。我不知道为什么 round 没有这样做。
  • 四舍五入不会删除小数点左边的数字,这就是原因。
  • 好的,这是有道理的。感谢您的帮助,对造成的误解深表歉意。

标签: r


【解决方案1】:

你可以使用功能楼

> so=read.csv("so3.csv",header=F)
> so
        V1
1  6075210
2  8263901
3  1251997
4  1800517
5  7481683
6  3706369
7  3235733
8  9541251
9  6389095
10 9672051
11 1624036
12 3575045
13 7592376
14 8395012
15 5933096
16 2358357
17 3440983
18 5948804
19 7215281
20 1698528
21 5133276
22 5436095
23 5698401
24 6927701
> so$V2=floor(so$V1/100)
> so
        V1    V2
1  6075210 60752
2  8263901 82639
3  1251997 12519
4  1800517 18005
5  7481683 74816
6  3706369 37063
7  3235733 32357
8  9541251 95412
9  6389095 63890
10 9672051 96720
11 1624036 16240
12 3575045 35750
13 7592376 75923
14 8395012 83950
15 5933096 59330
16 2358357 23583
17 3440983 34409
18 5948804 59488
19 7215281 72152
20 1698528 16985
21 5133276 51332
22 5436095 54360
23 5698401 56984
24 6927701 69277
> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多