相关疑难解决方法(0)

如何制作一个很好的R可重复的例子

在与同事讨论性能,教学,发送错误报告或在邮件列表上搜索指导时,以及在Stack Overflow上,通常会询问可重复的示例并始终提供帮助.

您有什么建议创建优秀示例的提示?如何以文本格式粘贴中的数据结构?您还应该包含哪些其他信息?

在另外还有其他招数来使用dput(),dump()structure()?你什么时候应该包括library()require()声明?其中保留字应避免一个,此外c,df,data等?

怎样才能成为一位伟大的重复的例子?

r r-faq

2474
推荐指数
23
解决办法
28万
查看次数

跨组的最新值的总和

对于我的每行数据,我想计算最近的和value每个group:

dt = data.table(group = c('a','b','a','a','b','a'),
                value = c(10, 5, 20, 15, 15, 10),
                desired = c(10, 15, 25, 20, 30, 25))
#   group value desired
#1:     a    10      10
#2:     b     5      15
#3:     a    20      25  # latest value of a is 20, of b is 5
#4:     a    15      20  # latest value of a is 15, of b is 5
#5:     b    15      30
#6:     a    10      25
Run Code Online (Sandbox Code Playgroud)

desired column是我想要实现的,我可以用一个简单的循环来完成这个,但是我的数据非常庞大,有很多行和组(1M +行,1000多个组).

for …
Run Code Online (Sandbox Code Playgroud)

r data.table

30
推荐指数
1
解决办法
582
查看次数

使用R中的面板数据

我想看看人们用R来处理具有大型数据集(即50 mil + obs)的面板数据的方法:该data.table软件包很有用,因为它有密钥并且非常快.该xts软件包非常有用,因为它具有执行各种时间序列的功能.因此,似乎有两个不错的选择:

  1. 有一个data.table并编写自定义时间序列函数来处理它
  2. 有一个xts对象列表,并lapply在每次要执行某些操作时在该列表上运行.最终这需要合并为一个data.frame回归等.

我知道这个plm包,但没有发现它对数据管理有用,就像上面的两个选项一样.你们用的是什么?什么时候最好的想法?

让我提出一个场景:假设有N个公司有T​​个时间段,其中N >> 0和T >> 0.data.table如果我想让每个公司滞后一段时间,那将会超级快,例如:

x <- data.table(id=1:10, dte=rep(seq(from=as.Date("2012-01-01"), to=as.Date("2012-01-10"), by="day"), each=10), val=1:100, key=c("id", "dte"))
x[,lag_val:=c(NA, head(val, -1)),by=id]
Run Code Online (Sandbox Code Playgroud)

另一种方法可能是:

y <- lapply(ids, function(i) {xts(x[id==i, val], order.by=x[id == i, dte])})
y <- lapply(y, function(obj) { cbind(obj, lag(obj, 1)) })
Run Code Online (Sandbox Code Playgroud)

前者的优势在于它具有大数据的速度.后者的优点是能够做类似的事情period.apply并使用其他功能xts.是否有提高xts表示速度的技巧?也许是两者的结合?xts看来,从对象转换到对象是昂贵的.

r zoo xts data.table

6
推荐指数
0
解决办法
1145
查看次数

通过使用 data.table 在每个组中向前滚动来填充缺失值

我的目标是通过向前滚动来按组填充缺失值。

虚拟数据

library(data.table)

DT <- structure(list(CLASS = c("A", "A", "A", "A", "A", "A", "B", "B","B"),
VAL = c(NA, 1, NA, NA, 2, NA, 50, NA, 100)),
.Names = c("CLASS", "VAL"),
row.names = c(NA, -9L), class = c("data.table", "data.frame"))

> DT
   CLASS VAL
1:     A  NA
2:     A   1
3:     A  NA
4:     A  NA
5:     A   2
6:     A  NA
7:     B  50
8:     B  NA
9:     B 100
Run Code Online (Sandbox Code Playgroud)

想要的结果

   CLASS VAL
1:     A  NA
2:     A   1
3:     A …
Run Code Online (Sandbox Code Playgroud)

r missing-data data.table

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

使用R中的Data.Table或Rcpp快速用字符串替换NA

我有一个大表:10M行乘33列,其中28列有一些NA值.这些NA值需要使用修补locf().我在这个主题上读了几个线程(在Rcpp中的单个R data.tablena.locf以及inverse.rle中按组有效地进行locf).但是,这些线程是关于替换数字向量.我不太熟悉Rcpp所以我不知道如何更改他们的代码以满足字符串---我的数据都是字符串.

以下是我的示例数据:

输入数据

Sample_File = structure(list(SO = c(112, 112, 112, 112, 113, 113, 113, 113), 
    Product.ID = c("AB123", "CD234", "DE345", "EF456", "FG456", 
    "GH567", "HI678", "IJ789"), Name = c(NA, NA, NA, "Human Being", 
    NA, "Lion", NA, "Bird"), Family = c(NA, NA, NA, "Homo Sapiens", 
    NA, NA, NA, "Passeridae"), SL1_Continent = c("Asia", NA, 
    "Asia", "Asia", NA, NA, NA, "Australia"), SL2_Country = c("China", 
    "China", NA, NA, NA, NA, NA, "Australia"), SL3_Direction = …
Run Code Online (Sandbox Code Playgroud)

r zoo rcpp data.table

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

标签 统计

r ×5

data.table ×4

zoo ×2

missing-data ×1

r-faq ×1

rcpp ×1

xts ×1