Questions tagged «data.table»

R data.table包是data.frame的扩展,用于快速内存数据分析。将dt标记用于带有Shiny(DT)的DataTables包。

2
按位置从data.table中提取列作为向量
如何从data.table的列中提取列作为矢量?以下是我尝试过的一些代码片段: DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6)) DT # x y z #1: 1 3 5 #2: 2 4 6 我想使用列位置获取此输出 DT$y #[1] 3 4 is.vector(DT$y) #[1] TRUE 使用列位置获取此输出的其他方法 DT[,y] #[1] 3 4 is.vector(DT[,y]) #[1] TRUE 这不给向量 DT[,2,with=FALSE] # y #1: 3 #2: 4 is.vector(DT[,2,with=FALSE]) #[1] FALSE 那两个不起作用: DT$noquote(names(DT)[2]) # Doesn't work #Error: attempt to …

2
在我自己的包中使用data.table包
我正在尝试在自己的包中使用data.table包。MWE如下: 我创建了一个函数test.fun,该函数只是创建了一个小的data.table对象,然后将按“ A”列分组的“ Val”列求和。该代码是 test.fun<-function () { library(data.table) testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25)) setkey(testdata, A) res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"] return(res) } 当我在常规的R会话中创建此函数,然后运行该函数时,它会按预期工作。 > res<-test.fun() data.table 1.8.0 For help type: help("data.table") > res A Ct Total Avg [1,] 1 5 -0.5326444 -0.1065289 [2,] 2 5 -4.0832062 -0.8166412 [3,] 3 5 0.9458251 0.1891650 [4,] 4 5 2.0474791 …
76 r  data.table 

2
从data.table中删除多列
从data.table中删除多列的正确方法是什么?我当前正在使用下面的代码,但是当我不小心重复其中一个列名时,出现了意外的行为。我不确定这是否是错误,或者是否不应该以这种方式删除列。 library(data.table) DT <- data.table(x = letters, y = letters, z = letters) DT[ ,c("x","y") := NULL] names(DT) [1] "z" 上面的工作正常,但是 DT <- data.table(x = letters, y = letters, z = letters) DT[ ,c("x","x") := NULL] names(DT) [1] "z"
76 r  data.table 

12
错误:ggplot2和data.table的包或名称空间加载失败
我无法打开安装ggp​​lot2和data.table软件包。它给我以下错误(ggplot2的示例) > library(ggplot2) Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : there is no package called ‘Rcpp’ Error: package or namespace load failed for ‘ggplot2’ 在关闭R会话之前,我能够使用这两个软件包正常工作。现在,每次我尝试运行它时,都会向我显示此错误。 我也曾尝试删除并重新安装它,但没有成功。 remove.packages(c("ggplot2", "data.table")) install.packages('ggplot2', dep = TRUE) install.packages('data.table', dep = TRUE) 我不知道怎么了
74 r  ggplot2  data.table 

5
在一个函数调用中将多列添加到R data.table?
我有一个函数,该函数在列表中返回两个值。这两个值都需要在两个新列中添加到data.table中。函数评估成本很高,因此我想避免必须两次计算函数。这是示例: library(data.table) example(data.table) DT x y v 1: a 1 42 2: a 3 42 3: a 6 42 4: b 1 4 5: b 3 5 6: b 6 6 7: c 1 7 8: c 3 8 9: c 6 9 这是我的功能的一个例子。记住,我说过这是昂贵的计算,最重要的是,无法从其他给定值中推断出一个返回值(如下例所示): myfun <- function (y, v) { …
73 r  data.table 

6
按组提取与变量最小值对应的行
我希望(1)将数据按一个变量()分组State,(2)在每个组中找到另一个变量(Employees)的最小值行,以及(3)提取整行。 (1)和(2)是简单的一线客,我觉得(3)也是,但我无法理解。 这是一个示例数据集: > data State Company Employees 1 AK A 82 2 AK B 104 3 AK C 37 4 AK D 24 5 RI E 19 6 RI F 118 7 RI G 88 8 RI H 42 data <- structure(list(State = structure(c(1L, 1L, 1L, 1L, 2L, 2L, …


2
如何将data.table按多列分组?
我正在使用该data.table软件包来加快对数据集的摘要统计收集。 我很好奇是否有一种方法可以将多个列进行分组。我的数据如下所示: purchaseAmt adShown url 15.54 00001 150000001 4.82 00002 150000001 157.99 05005 776300044 ... ... ... 我可以做这样的事情: adShownMedian <- df1[,median(purchaseAmt),by="adShown"] 以获得每个广告的中位数。我怎么会做一些联合收割机adShown和url? 我已经试过了: adShownMedian <- df1[,median(purchaseAmt),by=c("adShown","url")] 但没有运气。 有什么建议?
71 r  group-by  data.table 

5
如何在每个组中创建滞后变量?
我有一个data.table: set.seed(1) data <- data.table(time = c(1:3, 1:4), groups = c(rep(c("b", "a"), c(3, 4))), value = rnorm(7)) data # groups time value # 1: b 1 -0.6264538 # 2: b 2 0.1836433 # 3: b 3 -0.8356286 # 4: a 1 1.5952808 # 5: a 2 0.3295078 # 6: a …
69 r  data.table  plyr  dplyr 

1
.EACHI在data.table中?
我似乎无法找到究竟任何文件.EACHI中做data.table。我在文档中看到了简短的提及: 当在i和setting中传递那些组时,对已知组的子集进行聚合特别有效by=.EACHI。当i为data.table时,DT[i,j,by=.EACHI]评估连接的每一行j的组。我们称每个i为分组。DTi 但是,“群体”在意义上DT意味着什么?群组是否由设置的键确定DT?该组是否是使用所有列作为键的每个不同的行?我完全理解如何运行类似的东西,DT[i,j,by=my_grouping_variable]但是对于如何.EACHI工作却感到困惑。有人可以解释吗?

4
正确/最快的方式重塑数据表
我在R中有一个数据表: library(data.table) set.seed(1234) DT <- data.table(x=rep(c(1,2,3),each=4), y=c("A","B"), v=sample(1:100,12)) DT x y v [1,] 1 A 12 [2,] 1 B 62 [3,] 1 A 60 [4,] 1 B 61 [5,] 2 A 83 [6,] 2 B 97 [7,] 2 A 1 [8,] 2 B 22 [9,] 3 A 99 [10,] 3 …
67 r  data.table 

5
不带组的data.table线性内插NA值
我想在不带组的data.table中填充一些NA值。请考虑以下data.table提取物,该数据代表时间和距离: library(data.table) df <- data.frame(time = seq(7173, 7195, 1), dist = c(31091.33, NA, 31100.00, 31103.27, NA, NA, NA, NA, 31124.98, NA,31132.81, NA, NA, NA, NA, 31154.19, NA, 31161.47, NA, NA, NA, NA, 31182.97)) DT<- data.table(df) 我想在DT data.table中,使用取决于之前/之后的非NA值的函数填充NA值。例如,在j中编写一个函数来替换每条指令 DT[2, dist := (31091.33 + (31100-31091.33) / 2)] 然后 DT[5:8, dist := (31103.27 …
18 r  data.table 

4
使用数据表或igraph按组查找直接邻居
我有一个data.table: groups <- data.table(group = c("A", "B", "C", "D", "E", "F", "G"), code_1 = c(2,2,2,7,8,NA,5), code_2 = c(NA,3,NA,3,NA,NA,2), code_3 = c(4,1,1,4,4,1,8)) group code_1 code_2 code_3 A 2 NA 4 B 2 3 1 C 2 NA 1 D 7 3 4 E 8 NA 4 F NA NA 1 G …
14 r  data.table  igraph 

1
筛选数据表时,链接比ANDing的性能优势
我习惯于将相似的任务集中到一行中。例如,如果我需要过滤a,b以及c在数据表中,我把它们放在一起在一个[]与AND运算。昨天,我注意到在我的特定情况下,它的运行速度非常慢,并且经过了测试,却没有测试链接过滤器。我在下面提供了一个示例。 首先,我为随机数生成器添加种子,加载data.table,并创建一个虚拟数据集。 # Set RNG seed set.seed(-1) # Load libraries library(data.table) # Create data table dt <- data.table(a = sample(1:1000, 1e7, replace = TRUE), b = sample(1:1000, 1e7, replace = TRUE), c = sample(1:1000, 1e7, replace = TRUE), d = runif(1e7)) 接下来,我定义我的方法。第一种方法将过滤器链接在一起。第二个将过滤器与在一起。 # Chaining method chain_filter <- function(){ dt[a %between% …
12 r  data.table 

6
拆分字符列并获取字符串中的字段名称
我需要将包含信息的列拆分为几列。 我会使用,tstrsplit但相同的信息在行之间的顺序并不相同,我需要在变量中提取新列的名称。重要信息:可能有很多信息(字段变成新变量),我不知道所有这些信息,因此,我不需要“逐字段”解决方案。 以下是我所拥有的示例: library(data.table) myDT <- structure(list(chr = c("chr1", "chr2", "chr4"), pos = c(123L, 435L, 120L), info = c("type=3;end=4", "end=6", "end=5;pos=TRUE;type=2" )), class = c("data.table", "data.frame"), row.names = c(NA,-3L)) # chr pos info #1: chr1 123 type=3;end=4 #2: chr2 435 end=6 #3: chr4 120 end=5;pos=TRUE;type=2 我想得到: # chr pos end …
11 r  data.table  reshape 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.