小编Tom*_*eif的帖子

按R中的组转置数据

我有以下结构的数据:

x <- read.table(header=T, text="
X Y D S
a e 1 10
a e 2 20
a f 1 50
b c 1 40
b c 2 30
b c 3 60
b d 1 10 
b d 2 20")
Run Code Online (Sandbox Code Playgroud)

我希望得到以下结果:

X Y   1   2   3
a e  10  20
a f  50
b c  40  30  60
b d  10  20
Run Code Online (Sandbox Code Playgroud)

对于列的每个组合XY我想转列数据S的顺序列D.

我认为xtabs()会有用,但我不这么认为,我最好的版本是:

xtabs(formula=S~Y+D,data=x)
Run Code Online (Sandbox Code Playgroud)

结果如下:

   D
Y    1 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation reshape

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

在postgres中的WHERE子句中的Concat

我对PostgreSQL中的concat函数有疑问.

这句话适用于MySQL:

SELECT * FROM words
 WHERE CONCAT (word,' ',gender,' ',semantic) LIKE '%"+value+"%'. 
Run Code Online (Sandbox Code Playgroud)

Value是在我的Java程序中更改的变量.

但我需要在postgresql中使用相同的工作.我是如何使用postgres在WHERE子句中连接的,考虑变量"value"将使其值发生变化?

postgresql concatenation

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

闪亮 - 在输出中使用函数调用的结果

我有一个Shiny应用程序,根据选定的选项(列)动态重新计算数据集.重新计算的结果用于向用户显示另一组选项并创建绘图.

目前我正在使用observe()读取用户选择,重新计算数据集和更新UI.但是,当显示输出(绘图)时,我必须再次重新计算,因为observe()不返回任何内容.

有没有办法如何只重新计算一次数据集?

我创建了一个简单的例子来说明这一点:

library(devtools)
library(shiny)
runGist('7333949') 
Run Code Online (Sandbox Code Playgroud)

server.R我想有一个调用自定义函数AggregateDataobserve(),并在没有呼叫renderUI().

应用代码:

server.R:

# shiny server side code for each call
shinyServer(function(input, output, session){
     #update variable and group based on dataset
     observe({

          require(sqldf)

          if (is.null(input$source_columns)) {
               obj <-TestData
          } else {
               obj<-AggregateData(TestData,Columns=input$source_columns)
          }

          var.opts<-namel(colnames(obj))
          var.opts.original.slicers <- namel(colnames(TestData))           
          measures <- c('m1','m2','m3','m4','m5')

          var.opts.slicers <- var.opts[!(var.opts %in% c(measures,'x'))]
          var.opts.original.slicers <- var.opts.original.slicers[!(var.opts.original.slicers %in% c(measures,'x'))]
          var.opts.measures <- var.opts[var.opts %in% measures]

          updateSelectInput(session, "source_columns", choices = …
Run Code Online (Sandbox Code Playgroud)

r shiny

7
推荐指数
2
解决办法
9967
查看次数

更改renderDataTable中的数字格式

如何在Shiny中定义数据表的数字格式?我想只为某些列显示2位小数,但不明白应该在我的应用程序中定义它的位置.在server.Rui.R?在server.R,我所拥有的renderDataTable:

  output$woeTable <- renderDataTable({
    input$tryTree
    input$threshold
    # The following returns data frame with numeric columns
    get(input$dfDescr)[['variables']][[input$columns]][['woe']]
    },
    options=list(
      paging = FALSE,
      searching = FALSE)
  ) 
Run Code Online (Sandbox Code Playgroud)

如何格式化第2和第3列以仅显示两位小数?

r shiny

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

表明R包是专有的

有没有一种标准方法如何表明R包是专有的,由公司拥有,不应该在公司外共享?现在,我在DESCRIPTION文件中使用这个:

License: Proprietary, ownership of XX Company
Run Code Online (Sandbox Code Playgroud)

r r-package

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

Postgresql - 将整行返回为数组

有没有办法如何将以下结果转换为数组?

select pg_tables from pg_tables
Run Code Online (Sandbox Code Playgroud)

这将仅返回一列,但数据类型不是数组.

编辑:我正在使用PostgreSql 9.1.4

更新:我需要等效的以下SQL语句,而不需要编写适用于每个表的列名:

select 
    string_to_array(
    schemaname || '|' ||
    tablename || '|' || 
    tableowner || '|' ||
    coalesce(tablespace,'') || '|' ||
    hasindexes || '|' ||
    hasrules || '|' ||
    hastriggers
    ,'|')
from 
    pg_tables
Run Code Online (Sandbox Code Playgroud)

sql postgresql

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

在Postgresql中生成一系列的季度

在开始日期和结束日期之前,我需要生成一系列季度.我知道generate_series(),但它不适用于quarter:

SELECT * FROM generate_series('2008-01-01 00:00'::timestamp,'2009-01-01 12:00', '1 quarter');
Run Code Online (Sandbox Code Playgroud)

是什么让季度如此特别?除此以外generate_series()可以使用几乎所有东西,从微秒到千禧年:

select * from generate_series('2008-01-01 00:00'::timestamp,'2008-01-01 00:00:00.001', '1 microsecond');
select * from generate_series('2008-01-01 00:00'::timestamp,'2008-01-01 00:01', '1 second');
select * from generate_series('2008-01-01 00:00'::timestamp,'2008-01-01 01:00', '1 minute');
select * from generate_series('2008-01-01 00:00'::timestamp,'2008-01-01 12:00', '1 hour');
select * from generate_series('2008-01-01 00:00'::timestamp,'2009-01-01 12:00', '1 day');
select * from generate_series('2008-01-01 00:00'::timestamp,'2009-01-01 12:00', '1 week');
select * from generate_series('2008-01-01 00:00'::timestamp,'2009-01-01 12:00', '1 month');
select * from generate_series('2008-01-01 00:00'::timestamp,'2009-01-01 12:00', '1 year'); …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.1

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

打印数据框时不要打印NA

因为data frames没有na.print 选择.是否有任何解决方法来抑制NA的显示?

样本数据框:

df <- data.frame(
       x=c("a","b","c","d"),
       a=c(1,1,1,1),
       b=c(1,1,1,NA),
       c=c(1,1,NA,NA),
       d=c(1,NA,NA,NA))      
df
Run Code Online (Sandbox Code Playgroud)

结果是:

  x a  b  c  d
1 a 1  1  1  1
2 b 1  1  1 NA
3 c 1  1 NA NA
4 d 1 NA NA NA
Run Code Online (Sandbox Code Playgroud)

但我想表明:

  x a  b  c  d
1 a 1  1  1  1
2 b 1  1  1
3 c 1  1
4 d 1
Run Code Online (Sandbox Code Playgroud)

r output-formatting na

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

获取可用数据框列表

如何获取当前环境中可用的数据框名称向量?我试过了:

sapply(ls(), is.data.frame)
Run Code Online (Sandbox Code Playgroud)

但这失败了因为ls返回字符串的向量.我打算使用此列表作为Shiny app中动态选择的输入.

r shiny

6
推荐指数
3
解决办法
7079
查看次数

从向量计算行方式矩阵cumsum

给定一个向量,我想创建一个方形矩阵,其中向量的元素在对角线上,并且有行的cumsum元素.

示例向量:

vec <- c(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

所需输出:

     [,1] [,2] [,3] [,4]
[1,]    1    3    6   10
[2,]    0    2    5    9
[3,]    0    0    3    7
[4,]    0    0    0    4
Run Code Online (Sandbox Code Playgroud)

现在,我使用双循环功能:

diagSum <- function(vec) {
  mat <- diag(vec)
  for (i in seq(nrow(mat))) {
    for (j in seq(i, ncol(mat))) {
      if (j > i) {
        mat[i, j] <- mat[i, j - 1] + mat[j, j]      
      }
    }
  }
  mat
}
Run Code Online (Sandbox Code Playgroud)

这样做的R-way(避免循环)是什么?

r matrix

6
推荐指数
3
解决办法
1227
查看次数