小编Joh*_*ton的帖子

自动将R因子扩展为每个因子级别的1/0指标变量的集合

我有一个R数据帧,其中包含我想要"扩展"的因子,因此对于每个因子级别,新数据帧中都有一个关联列,其中包含1/0指示符.例如,假设我有:

df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

我想要:

df.desired  <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

因为对于某些分析的,你需要有一个完全的数字数据帧(例如,主成分分析),我认为这功能可能是内置的.写一个函数来做到这一点应该不会太难,但我可以预见到一些与列名相关的挑战,如果已存在某些内容,我宁愿使用它.

r

100
推荐指数
5
解决办法
5万
查看次数

需要从SQL Server将包含换行符的字段导出为CSV

我正在运行SQL Server Management Studio 2005中的查询,该查询将HTML文件存储为字符串,例如:

SELECT html 
FROM table 
Run Code Online (Sandbox Code Playgroud)

此查询很好地显示在"结果"窗口中,即每行包含整个HTML文件的字符串,每行一个记录.

但是,当我使用"结果到文件"选项时,它会将其导出为不可用的CSV,并且在字段中(即在HTML中)发生换行时,CSV中会出现换行符,而不是根据需要每行换行一行.我尝试使用"网格"和"文本"结果的查询>查询选项,但无济于事.出口到CSV的字段不会出现在引号中.

一些想法:

  1. 可能会附加带有SQL的引号吗?

  2. 是否有一些T-SQL等同于其他方言中可能的WITH CSV HEADER命令?

csv file-format sql-server-2005

29
推荐指数
6
解决办法
5万
查看次数

在Postgresql中拆分以逗号分隔的字段,并在所有结果表上执行UNION ALL

我有一个包含逗号分隔字符串字段的表:

ID | fruits
-----------
1  | cherry,apple,grape 
2  | apple,orange,peach 
Run Code Online (Sandbox Code Playgroud)

我想创建表的规范化版本,如下所示:

ID | fruits
-----------
1  | cherry 
1  | apple 
1  | grape
2  | apple 
2  | orange 
2  | peach 
Run Code Online (Sandbox Code Playgroud)

postgresql 8.4文档描述了一个可以转换单个表的regexp_split_to_table函数:

SELECT foo 
FROM regexp_split_to_table('the quick brown fox jumped over the lazy dog',E'\\s+') AS
foo;
Run Code Online (Sandbox Code Playgroud)

这给你这个:

  foo   
--------
  the    
  quick  
  brown  
  fox    
  jumped 
  over   
  the    
  lazy   
  dog    
 (9 rows)
Run Code Online (Sandbox Code Playgroud)

但这仅适用于单个领域.我想要做的是将某种UNION应用于通过拆分每个字段生成的所有表.谢谢.

sql csv postgresql

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

在R中输出一个矢量,其格式与用于将其输入R的格式相同

也许我在想这个,但我认为有一个内置的R函数可以让你以你用来输入该对象的格式打印一个R矢量(以及可能的其他对象,如矩阵和数据帧)(返回为一个字符串).例如,

> x <- c(1,2,3)
> x
[1] 1 2 3
> magical.function(x)
"c(1,2,3)" 
Run Code Online (Sandbox Code Playgroud)

这个功能存在吗?

r

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

用于通过索引对矢量进行分区并对该分区执行操作的惯用R代码

我试图在R中找到惯用的方法来通过某个索引向量对数值向量进行分区,找到该分区中所有数字的总和,然后将每个单独的条目除以该分区总和.换句话说,如果我从这开始:

df <- data.frame(x = c(1,2,3,4,5,6), index = c('a', 'a', 'b', 'b', 'c', 'c'))
Run Code Online (Sandbox Code Playgroud)

我希望输出创建一个向量(让我们称之为z):

c(1/(1+2), 2/(1+2), 3/(3+4), 3/(3+4), 5/(5+6), 6/(5+6))  
Run Code Online (Sandbox Code Playgroud)

如果我这样做是SQL并且可以使用窗口函数,我会这样做:

select 
 x / sum(x) over (partition by index) as z 
from df
Run Code Online (Sandbox Code Playgroud)

如果我使用plyr,我会做这样的事情:

ddply(df, .(index), transform, z = x / sum(x))
Run Code Online (Sandbox Code Playgroud)

但我想知道如何使用标准的R函数编程工具,如mapply/aggregate等.

functional-programming r plyr

18
推荐指数
3
解决办法
2432
查看次数

从emacs拼写检查中删除Sweave文档中的代码块

在Sweave文档中,R中的代码块是从主文本中设置的,如下所示:

Catz are well known for their fur & pur. 

<<echo = false>>=
catz <- 1 + 2 
@
Run Code Online (Sandbox Code Playgroud)

我想对LaTeX部分进行拼写检查(并标记"Catz")但是要跳过代码块(不是标记为"catz").在一个很长的文档中,在代码部分中为每个"拼写错误"命中"SPC"变得乏味.

emacs r sweave

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

让Emacs忽略Sweave文档中\ Sexpr {}命令的内容,以防止基于$的语法突出显示不正确

在LaTeX中编辑Sweave文档时(使用Noweb模式),Emacs知道"忽略"<< >> = blocks中的代码.但是,对于interstitial\Sexpr {}块,情况并非如此.鉴于通过'$'和LaTeX按列引用R来使用$来设置方程,这些\ Sexpr {}块通常会破坏语法高亮,如下所示:

Emacs在使用Sweave时突出显示问题

我对elisp和Emacs语法突出显示有一个非常基本的理解,但我希望有可能在.emacs中添加一些东西来禁用\ Sexpr {}中的任何解析/ $检测.

emacs elisp r sweave

13
推荐指数
3
解决办法
364
查看次数

忽略postgresql rank()窗口函数中的空值

我正在使用PostgreSQL编写SQL查询,需要对在某个位置"到达"的人进行排名.然而,不是每个人都到了.我使用rank()窗口函数来生成到达等级,但是在到达时间为空的地方,而不是返回空等级,rank()聚合函数只是将它们视为在其他人之后到达.我想要发生的是这些没有出现的排名NULL而不是这个估算的排名.

这是一个例子.假设我有一个如下所示的表dinner_show_up:

 | Person | arrival_time | Restaurant |
 +--------+--------------+------------+
 | Dave   |     7        | in_and_out |
 | Mike   |     2        | in_and_out | 
 | Bob    |   NULL       | in_and_out | 
Run Code Online (Sandbox Code Playgroud)

鲍勃从不露面.我写的查询将是:

select Person, 
       rank() over (partition by Restaurant order by arrival_time asc) 
               as arrival_rank
from dinner_show_up; 
Run Code Online (Sandbox Code Playgroud)

结果将是

 | Person | arrival_rank | 
 +--------+--------------+
 | Dave   |     2        | 
 | Mike   |     1        | 
 | Bob    |     3        |  
Run Code Online (Sandbox Code Playgroud)

我想要发生的是这样的:

 | Person …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

11
推荐指数
2
解决办法
8812
查看次数

设置日期时间对象之间的差异单位

diff命令以R日期格式返回日期向量中日期之间的差异.我想控制返回的单位,但似乎它们是自动确定的,无法用参数控制它.这是一个例子:

 > t = Sys.time() 
 > diff(c(t, t + 1))
 Time difference of 1 secs
Run Code Online (Sandbox Code Playgroud)

但是:

> diff(c(t, t+10000))
Time difference of 1.157407 days
Run Code Online (Sandbox Code Playgroud)

"时间增量"对象有一个单位属性,但编写一堆条件来强制将所有内容强制为几天,几秒等等似乎很愚蠢.

r time-series

10
推荐指数
3
解决办法
5691
查看次数

条件a ..count ..对faceting变量求和

我试图一个方面注释一个条形图,其中观察的百分比落入该桶中.这个问题与这个问题密切相关: 在分类变量的图表中显示%而不是计数,但是分面的引入引入了皱纹.相关问题的答案是使用stat_bin w/text geom,然后将标签构造如下:

 stat_bin(geom="text", aes(x = bins,
         y = ..count..,
         label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
         )
Run Code Online (Sandbox Code Playgroud)

这对于一个没有面子的情节很好.然而,对于facet,这个总和(.. count ..)是对整个观察集合的总结,而不考虑方面.下图说明了问题 - 请注意,在面板中百分比不等于100%.

在此输入图像描述

这里是上图的实际代码:

 g.invite.distro <- ggplot(data = df.exp) +
 geom_bar(aes(x = invite_bins)) +
 facet_wrap(~cat1, ncol=3) +
 stat_bin(geom="text", aes(x = invite_bins,
         y = ..count..,
         label = paste(round(100*(..count../sum(..count..)),1), "%", sep="")
         ),  
         vjust = -1, size = 3) +
  theme_bw() + 
scale_y_continuous(limits = c(0, 3000))
Run Code Online (Sandbox Code Playgroud)

更新:根据请求,这是一个重新产生问题的小例子:

df <- data.frame(x = c('a', 'a', 'b','b'), f = c('c', 'd','d','d'))
ggplot(data …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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