小编Mah*_*iha的帖子

data.table一次计算几列

提前感谢您阅读本文.我有一个在data.table 1.9.3上工作正常的函数.但今天我更新了我的data.table包,我的功能不起作用.

这是我在data.table 1.9.3上的函数和工作示例:

trait.by <- function(data,traits="",cross.by){
  traits = intersect(traits,names(data))
  if(length(traits)<1){  
    #if there is no intersect between names and traits
    return(      data[,       list(N. = .N),    by=cross.by])
  }else{
    return(data[,c(   N. = .N,
                    MEAN = lapply(.SD,function(x){return(round(mean(x,na.rm=T),digits=1))}) , 
                    SD   = lapply(.SD,function(x){return(round(sd  (x,na.rm=T),digits=2))}) ,
                    'NA' = lapply(.SD,function(x){return(sum  (is.na(x)))})),
                 by=cross.by, .SDcols = traits])
  }
}

> trait.by(data.table(iris),traits = c("Sepal.Length",    "Sepal.Width"),cross.by="Species")
#      Species N. MEAN.Sepal.Length MEAN.Sepal.Width SD.Sepal.Length
#1:     setosa 50               5.0              3.4            0.35
#2: versicolor 50               5.9              2.8            0.52
#3:  virginica 50               6.6              3.0            0.64
# …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

使用ajax的儿童行闪亮数据表

我正在尝试使用数据表库来实现更多自定义.

这是我想要做的例子. https://datatables.net/examples/api/row_details.html 请注意,我在不同的data.frame R变量中有详细信息.像这样

A= data.frame(Name = c("Airi Satou", "Angelica Ramos","Paul Byrd")
               , Position = c("Accountant","Accountant", "CEO")
               , Office   = c("Tokyo", "Tokyo", "New York"))
A.detail= data.frame(Name = c("Airi Satou", "Angelica Ramos")
               , Extension= c("5407c", "8422")
               , salary   = c(16000, 20000))
Run Code Online (Sandbox Code Playgroud)

我不喜欢合并两个data.frame变量,如果可以在没有合并的情况下这样做,因为计算时间.显然,有些行可能没有任何细节.

我可以在数据表中选择一行,并通过将其绑定为输入将行信息发送到R(感谢https://github.com/toXXIc/datatables.Selectable/)然后我可以从R中找到与所选行相关的详细信息第二个data.frame变量.但我不知道如何将此发送回html(在所选行下)显示.我已将第一个表绑定为shinyoutput所以我;我不确定是否可以传递另一个数据来再次更改此输出.

也许我应该在单击详细信息按钮时使用ajax来请求更多数据,但我不知道如何在闪亮的情况下执行ajax请求.

ajax jquery r datatables shiny

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

使用 data.table 优化分组依据

我想知道当我使用group by. 这是一个简化的示例:

dt = data.table(iris)
dt[,.(
  # .N, 
  # sum_len = sum(Sepal.Length), 
  avg_len   = sum(Sepal.Length)/.N,
  var_len   = sum(Sepal.Length^2)/.N - (sum(Sepal.Length)/.N)^2
),by=  "Species"]
Run Code Online (Sandbox Code Playgroud)

在这里我要重复使用sum(Sepal.Length)和.N无需重新计算。

编辑:一个更完整的例子是我们也在使用.SD:

dt[,c(lapply(.SD, mean),lapply(.SD, var)),by="Species",.SDcols = c("Sepal.Length", "Sepal.Width")]
Run Code Online (Sandbox Code Playgroud)

r data.table

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

标签 统计

r ×3

data.table ×2

ajax ×1

datatables ×1

jquery ×1

shiny ×1