我有一个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)
因为对于某些分析的,你需要有一个完全的数字数据帧(例如,主成分分析),我认为这功能可能是内置的.写一个函数来做到这一点应该不会太难,但我可以预见到一些与列名相关的挑战,如果已存在某些内容,我宁愿使用它.
我正在运行SQL Server Management Studio 2005中的查询,该查询将HTML文件存储为字符串,例如:
SELECT html
FROM table
Run Code Online (Sandbox Code Playgroud)
此查询很好地显示在"结果"窗口中,即每行包含整个HTML文件的字符串,每行一个记录.
但是,当我使用"结果到文件"选项时,它会将其导出为不可用的CSV,并且在字段中(即在HTML中)发生换行时,CSV中会出现换行符,而不是根据需要每行换行一行.我尝试使用"网格"和"文本"结果的查询>查询选项,但无济于事.出口到CSV的字段不会出现在引号中.
一些想法:
可能会附加带有SQL的引号吗?
是否有一些T-SQL等同于其他方言中可能的WITH CSV HEADER命令?
我有一个包含逗号分隔字符串字段的表:
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应用于通过拆分每个字段生成的所有表.谢谢.
也许我在想这个,但我认为有一个内置的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中找到惯用的方法来通过某个索引向量对数值向量进行分区,找到该分区中所有数字的总和,然后将每个单独的条目除以该分区总和.换句话说,如果我从这开始:
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等.
在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"变得乏味.
在LaTeX中编辑Sweave文档时(使用Noweb模式),Emacs知道"忽略"<< >> = blocks中的代码.但是,对于interstitial\Sexpr {}块,情况并非如此.鉴于通过'$'和LaTeX按列引用R来使用$来设置方程,这些\ Sexpr {}块通常会破坏语法高亮,如下所示:

我对elisp和Emacs语法突出显示有一个非常基本的理解,但我希望有可能在.emacs中添加一些东西来禁用\ Sexpr {}中的任何解析/ $检测.
我正在使用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) 该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)
"时间增量"对象有一个单位属性,但编写一堆条件来强制将所有内容强制为几天,几秒等等似乎很愚蠢.
我试图在一个方面内注释一个条形图,其中观察的百分比落入该桶中.这个问题与这个问题密切相关: 在分类变量的图表中显示%而不是计数,但是分面的引入引入了皱纹.相关问题的答案是使用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 ×7
csv ×2
emacs ×2
postgresql ×2
sql ×2
sweave ×2
elisp ×1
file-format ×1
ggplot2 ×1
plyr ×1
time-series ×1