我有一个data_frame
我希望vector
成为元素串联的地方A
.所以
df <- data_frame(id = c(1, 1, 2, 2), A = c("a", "b", "b", "c"))
df
Source: local data frame [4 x 2]
id A
1 1 a
2 1 b
3 2 b
4 2 c
Run Code Online (Sandbox Code Playgroud)
应该成为
newdf
Source: local data frame [4 x 2]
id vector
1 1 "a b"
2 2 "b c"
Run Code Online (Sandbox Code Playgroud)
我的第一个倾向是使用paste()
内部,summarise
但这不起作用.
df %>% group_by(id) %>% summarise(paste(A))
Error: expecting a single value
Run Code Online (Sandbox Code Playgroud)
Hadley和Romain谈到了GitHub问题中的类似问题,但我不太清楚这是如何直接应用的.似乎应该有一个非常简单的解决方案,特别是因为 …
我想基于a中的值创建一个类的实例pandas.DataFrame
.我已经失败了.
import itertools
import multiprocessing as mp
import pandas as pd
class Toy:
id_iter = itertools.count(1)
def __init__(self, row):
self.id = self.id_iter.next()
self.type = row['type']
if __name__ == "__main__":
table = pd.DataFrame({
'type': ['a', 'b', 'c'],
'number': [5000, 4000, 30000]
})
for index, row in table.iterrows():
[Toy(row) for _ in range(row['number'])]
Run Code Online (Sandbox Code Playgroud)
我已经能够通过添加以下内容来并行化这种(某种程度):
pool = mp.Pool(processes=mp.cpu_count())
m = mp.Manager()
q = m.Queue()
for index, row in table.iterrows():
pool.apply_async([Toy(row) for _ in range(row['number'])])
Run Code Online (Sandbox Code Playgroud)
如果数字row['number']
显着长于长度,这似乎会更快table
.但在我的实际情况中,table …
我试图用我的数据中的一些缺失值替换来自类似组的平均值.
我的数据如下:
X Y
1 x y
2 x y
3 NA y
4 x y
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
X Y
1 x y
2 x y
3 y y
4 x y
Run Code Online (Sandbox Code Playgroud)
我写了这个,它有效
for(i in 1:nrow(data.frame){
if( is.na(data.frame$X[i]) == TRUE){
data.frame$X[i] <- data.frame$Y[i]
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的data.frame几乎有五十万行,而for/if语句非常慢.我想要的是类似的东西
is.na(data.frame$X) <- data.frame$Y
Run Code Online (Sandbox Code Playgroud)
但这会导致不匹配的大小错误.似乎应该有一个命令来执行此操作,但我无法在SO或R帮助列表中找到它.有任何想法吗?
我试图在MacVim中使用Inconsolata作为我的字体,但我似乎找不到斜体版本.我正在使用曝光的配色方案,它应该用于斜体注释,并且它适用于字体书中具有斜体或斜体版本的字体.
有没有办法以某种方式"制作"斜体版本?是否有一些我无法找到的文件?
我想在R中使用交叉表dplyr
.我有充分的理由不仅使用base table()
命令.
table(mtcars$cyl, mtcars$gear)
3 4 5
4 1 8 2
6 2 4 1
8 12 0 2
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl, gear) %>%
tally() %>%
spread(gear, n, fill = 0)
Source: local data frame [3 x 4]
cyl 3 4 5
1 4 1 8 2
2 6 2 4 1
3 8 12 0 2
Run Code Online (Sandbox Code Playgroud)
这一切都很好.但是当group_by()
变量中缺少值时,它似乎就会崩溃.
mtcars %>%
mutate(
cyl = ifelse(cyl > 6, NA, cyl),
gear = ifelse(gear > 4, …
Run Code Online (Sandbox Code Playgroud) 我在一个情节中打印Case-Shiller指数:
structure(list(Date = structure(c(10957, 11048, 11139, 11231, 11323, 11413, 11504, 11596, 11688, 11778, 11869, 11961, 12053, 12143, 12234, 12326, 12418, 12509, 12600, 12692, 12784, 12874, 12965, 13057, 13149, 13239, 13330, 13422, 13514, 13604, 13695, 13787, 13879, 13970, 14061, 14153, 14245, 14335, 14426, 14518, 14610, 14700, 14791, 14883, 14975, 15065, 15156, 15248, 15340, 15431, 15522, 15614, 15706, 10957, 11048, 11139, 11231, 11323,
11413, 11504, 11596, 11688, 11778, 11869, 11961, 12053, 12143, 12234, 12326, 12418, 12509, 12600, 12692, 12784, 12874, 12965, 13057, …
Run Code Online (Sandbox Code Playgroud) 我们正在采用该git-flow
方法,并开始在我们公司使用 GitHub 来组织我们的工作并帮助协作。
但我们的行业有相当长的开发周期(正式发布之间有很多年),所以我们可能develop
一次会在分支上呆上好几个月。然而,只有当您推送到 时master
,才会触发一些不错的 GitHub 功能:
所以我们不能使用 GitHub 自动跟踪进度,直到几个月后,项目就基本完成了。我相信如果我创建develop
默认分支,这个问题就会消失。
但还会出现其他问题吗?就像,我仍然想master
成为头版。我担心来到该项目的人只会看到最新的开发版本,可能没有错误检查等。
长期以来,我一直习惯于apsrtable
快速创建模型比较表,但我发现它有些不美观和笨重,因此我的论文表是带有\Sexpr
表达式的手工编码表。我很高兴找到stargazer
,但对我使用的某些模型不受支持感到失望。
随着apsrtable
您可以通过更新很容易扩展的模型apsrtableSummary
和ModelInfo
方法(如在此提问/回答)。
我一直在寻找(但没有找到)类似的方法来将观星者扩展到以下模型:
lme
mlogit
spdep
任何人都有这方面的经验/知道如何做到这一点?
我有一个非常大的 data.frame
,我想应用一个相当复杂的函数,计算一个新列.我想要并行完成.这类似于r listserve上发布的问题,但第一个答案是错误的,第二个答案是无益的.
由于parallel
包装的原因,我已经弄明白了,除了如何将输出重新放回数据框.这是一个显示我所得到的MWE:
library(parallel)
# Example Data
data <- data.frame(a = rnorm(200), b = rnorm(200),
group = sample(letters, 200, replace = TRUE))
# Break into list
datagroup <- split(data, factor(data$group))
# execute on each element in parallel
options(mc.cores = detectCores())
output <- mclapply(datagroup, function(x) x$a*x$b)
Run Code Online (Sandbox Code Playgroud)
结果output
是一个数字向量列表.我需要将它们添加到我可以添加的列中data
.我一直在寻找do.call(cbind, ...)
,但我有两个名称相同的列表,而不是我加入的单个列表.melt(output)
给我一个向量,但它的行与...的顺序不同data
.
我想错开我的x轴标签ggplot2
.令人惊讶的是,我尝试过的东西(感谢@Hadley和一致的语法!).
c <- ggplot(mtcars, aes(factor(cyl)))
c <- c + geom_bar()
c + theme(axis.text.x = element_text(vjust = c(0, 0.1, 0.2)))
Run Code Online (Sandbox Code Playgroud)
但似乎结果是,专用于边际的垂直空间量变得不必要地大.有关将其恢复到规模的任何提示吗?