相关疑难解决方法(0)

透视大数据.表格

我在R中有一个大数据表:

library(data.table)
set.seed(1234)
n <- 1e+07*2
DT <- data.table(
  ID=sample(1:200000, n, replace=TRUE), 
  Month=sample(1:12, n, replace=TRUE),
  Category=sample(1:1000, n, replace=TRUE),
  Qty=runif(n)*500,
  key=c('ID', 'Month')
)
dim(DT)
Run Code Online (Sandbox Code Playgroud)

我想调整这个data.table,使Category成为一个列.不幸的是,由于组内的类别数量不恒定,我不能使用这个答案.

我有什么想法可以做到这一点?

/编辑:基于joran的评论和flodel的回答,我们正在重塑以下内容data.table:

agg <- DT[, list(Qty = sum(Qty)), by = c("ID", "Month", "Category")]
Run Code Online (Sandbox Code Playgroud)

这种重塑可以通过多种方式实现(到目前为止我已经得到了一些好的答案),但我真正想要的是能够很好地扩展到data.table数百万行和数百到数千种类别的东西.

r data.table

8
推荐指数
1
解决办法
6579
查看次数

扩展不规则序列并将零添加到缺失值

我有一个数据框,其序列在'col1'中,值在'col2'中:

col1 col2
2     0.02
5     0.12
9     0.91
13    1.13
Run Code Online (Sandbox Code Playgroud)

我想用1到13的常规序列扩展'col1'中的不规则序列.对于原始数据中缺少的'col1'中的值,我希望'col2' 0在最终输出中得到值:

col1  col2
1     0
2     0.02
3     0
4     0
5     0.12
6     0
7     0
8     0
9     0.91
10    0
11    0
12    0
13    1.13
Run Code Online (Sandbox Code Playgroud)

我怎么能在R中这样做?

r

6
推荐指数
2
解决办法
370
查看次数

在data.table中添加缺少值的行

我的问题在某种程度上与在data.frame中为缺失值添加行的最快方法有关但我觉得有点困难.我无法弄清楚如何使这个解决方案适应我的问题.

这是我的data.table看起来像:

                   ida       idb         value     date
   1:               A         2          26600  2004-12-31
   2:               A         3          19600  2005-03-31
   3:               B         3          18200  2005-06-30
   4:               B         4          1230   2005-09-30
   5:               C         2          8700   2005-12-31
Run Code Online (Sandbox Code Playgroud)

不同之处在于每个'ida'都有自己的日期,并且至少有一行"ida"出现在每个日期,但不一定是所有'idb'.我想插入缺少相应日期的每个缺失('ida','idb')对,并将0作为值.

而且,日期没有周期性.

你会怎么做?

期望的输出:

                   ida       idb         value     date
   1:               A         2          26600  2004-12-31
   1:               A         2            0    2005-03-31
   2:               A         3          19600  2005-03-31
   2:               A         3            0    2004-12-31
   3:               B         3          18200  2005-06-30
   4:               B         3            0    2005-09-30
   5:               B         4          1230   2005-09-30
   4:               B …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
1
解决办法
145
查看次数

按组填写缺少的日期

我有一个如下所示的数据集:

shop_id,item_id,time,value
150,1,2015-07-10,3
150,1,2015-07-11,5
150,1,2015-07-13,2
150,2,2015-07-10,15
150,2,2015-07-12,12
Run Code Online (Sandbox Code Playgroud)

在每个组中,由"shop_id和"item_id"定义,缺少日期.

我希望将这个不规则的时间序列扩展到每个组中的常规连续日期:

shop_id,item_id,time,value
150,1,2015-07-10,3
150,1,2015-07-11,5
150,1,2015-07-12,0 # <~~ added
150,1,2015-07-13,2
150,2,2015-07-10,15
150,2,2015-07-11,0 # <~~ added
150,2,2015-07-12,12
Run Code Online (Sandbox Code Playgroud)

对于添加的日期,相应的值应为零.我读过非常相似的问题(使用R或SQL合并),但我见过的大多数解决方案都不涉及GROUP BY.

基本上我可以访问SQL数据库/我可以导出为CSV,最好在C#中进行操作.希望找到可以进行此类数据操作但无法找到的C#库.

任何建议或帮助表示赞赏!

c# sql-server r

4
推荐指数
1
解决办法
553
查看次数

在数据框中填写连续值

我有一个R数据处理问题.我在.csv文件中有大量数据,我可以使用它加载readr.问题是我需要添加到数据帧的缺失值.

示例数据:

X1    X2    Value
Coal  1     300
Coal  3     100
Coal  5     150
NatG  2     175
NatG  4     150
Run Code Online (Sandbox Code Playgroud)

此文件将正确加载.但是,我想添加处理,以便最终的数据帧包含每个X1类型的条目和X2中的整个序列1:5,缺失值设置为零.最终的数据框如下:

X1    X2    Value
Coal  1     300
Coal  2     0
Coal  3     100
Coal  4     0
Coal  5     150
NatG  1     0
NatG  2     175
NatG  3     0
NatG  4     150
NatG  5     0
Run Code Online (Sandbox Code Playgroud)

我尝试使用readr加载所有条目等于零的文件,然后将实际数据读入相同的数据框,但这是一个破坏性的覆盖,并删除了丢失的行.我需要知道如何在数据帧中添加适当的行,而不知道X1下每个值的1:5序列中将丢失哪些值.

r dataframe

4
推荐指数
1
解决办法
487
查看次数

填充每组时间序列的有效方法

我正在寻找一种方法来按每组的时间填充时间序列数据集。我使用的非常低效的方法是对split每个组的数据集,并在该列表的所有元素中应用自定义时间序列填充函数(在最大值和最小值之间创建序列,然后合并)。不用说,这个操作不会通过分裂。

我的数据集看起来像,

    source                 grp cnt
 1:     83 2017-06-06 13:00:00   1
 2:     83 2017-06-06 23:00:00   1
 3:     83 2017-06-07 03:00:00   1
 4:     83 2017-06-07 07:00:00   2
 5:     83 2017-06-07 13:00:00   1
 6:     83 2017-06-07 19:00:00   1
 7:     83 2017-06-08 00:00:00   1
 8:     83 2017-06-08 14:00:00   1
 9:     83 2017-06-08 15:00:00   1
10:     83 2017-06-08 20:00:00   1
11:    137 2017-06-04 02:00:00   1
12:    137 2017-06-04 05:00:00   1
13:    137 2017-06-04 23:00:00   1
...
Run Code Online (Sandbox Code Playgroud)

我的尝试是tidyverse通过利用该函数来使用方法complete,即

library(tidyverse)

d1 …
Run Code Online (Sandbox Code Playgroud)

r data.table tidyverse

2
推荐指数
1
解决办法
1127
查看次数

在R的数据框中插入带有零的行

考虑像这样的零散数据集:

   ID       Date Value
1   1 2012-01-01  5065
4   1 2012-01-04  1508
5   1 2012-01-05  9489
6   1 2012-01-06  7613
7   2 2012-01-07  6896
8   2 2012-01-08  2643
11  3 2012-01-02  7294
12  3 2012-01-03  8726
13  3 2012-01-04  6262
14  3 2012-01-05  2999
15  3 2012-01-06 10000
16  3 2012-01-07  1405
18  3 2012-01-09  8372
Run Code Online (Sandbox Code Playgroud)

请注意,缺少(2,3,9,10,17)的观察值。我想要的是用“ Value” = 0填充数据集中的某些空白,如下所示:

   ID       Date Value
1   1 2012-01-01  5920
2   1 2012-01-02     0
3   1 2012-01-03     0
4   1 2012-01-04  8377
5 …
Run Code Online (Sandbox Code Playgroud)

row r zero dataframe

2
推荐指数
1
解决办法
1185
查看次数

标签 统计

r ×7

data.table ×3

dataframe ×2

c# ×1

row ×1

sql-server ×1

tidyverse ×1

zero ×1