小编Mak*_*e42的帖子

使用基于整行的dplyr/magrittr过滤行

一个能够使用dplyr过滤行filter,但条件通常基于每行的特定列,例如

d <- data.frame(x=c(1,2,NA),y=c(3,NA,NA),z=c(NA,4,5))
d %>% filter(!is.na(y))
Run Code Online (Sandbox Code Playgroud)

我想根据NA的数量是否大于50%来过滤行,例如

d %>% filter(mean(is.na(EACHROW)) < 0.5 )
Run Code Online (Sandbox Code Playgroud)

我如何以dplyr/magrittr流方式执行此操作?

r dplyr

3
推荐指数
1
解决办法
939
查看次数

将 Mayavi 安装到 Anaconda 中

我想将 Mayavi 安装到我的 anaconda 安装中,因为我运行了以下命令,但收到一条错误消息,我不确定如何处理:

user@Kubuntu:~$ source activate myenv
(myenv)user@Kubuntu:~$ conda install mayavi
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
Solving package specifications: ....

The following specifications were found to be in conflict:
  - anaconda-client (target=anaconda-client-1.6.0-py35_0.tar.bz2) -> python 2.7*|3.3*|3.4*|3.5*|3.6*
  - anaconda-client (target=anaconda-client-1.6.0-py35_0.tar.bz2) -> pytz
  - anaconda-client (target=anaconda-client-1.6.0-py35_0.tar.bz2) -> requests *|>=2.9.1
  - behave (target=behave-1.2.5-py35_0.tar.bz2) -> parse >=1.6.3
  - behave (target=behave-1.2.5-py35_0.tar.bz2) -> python 3.5*
  - clyent (target=clyent-1.2.2-py35_0.tar.bz2) -> python 2.7*|3.3*|3.4*|3.5*|3.6*
  - cycler (target=cycler-0.10.0-py35_0.tar.bz2) -> python 2.7*|3.4*|3.5*|3.6*
  - cycler (target=cycler-0.10.0-py35_0.tar.bz2) …
Run Code Online (Sandbox Code Playgroud)

linux mayavi anaconda conda

3
推荐指数
1
解决办法
4663
查看次数

使用 cowplot 将 x 和 y 轴标签添加到 ggplot-grid 构建

我用牛图制作了一个网格:

library(ggplot2)
library(cowplot)

ggg1 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
ggg2 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
ggg3 <- ggplot(mtcars, aes(mpg,vs)) + geom_point() +
  theme(axis.title.x=element_blank(),
        axis.title.y=element_blank())
plot_grid(plot_grid(ggg1, ggg2, labels=c("", ""), ncol = 1), ggg3, labels=c("", ""), ncol = 2)
Run Code Online (Sandbox Code Playgroud)

导致图像

在此处输入图片说明

(当然,这只是一个最小的工作示例)。

现在我想要一个标题为“mpg”的 xaxis 和一个标题为“vs”的 yaxis - 每个都像这样居中:

在此处输入图片说明

我怎样才能用 ggplot 做到这一点。我没有尝试过add_subordraw_label如何使用 plot_grid 自定义边距和标签设置?工作。ggplot的答案:如何将常见的 x 和 y 标签添加到绘图网格中不使用牛图。我可以用 cowplot 做到这一点吗?

重要提示:我希望能够设置标签字体的大小。

r ggplot2 cowplot

3
推荐指数
1
解决办法
1721
查看次数

GIT:致命:提交时无法解析 HEAD 错误

当尝试承诺时

git commit -a -m "Huge update"
Run Code Online (Sandbox Code Playgroud)

我明白了

致命:提交时无法解析 HEAD 错误

读完fatal: Could not parse HEAD Error When Commiting I 命令后

 git symbolic-ref HEAD refs/heads/master
Run Code Online (Sandbox Code Playgroud)

但没有输出,但我确实得到了

$ git fsck
Checking object directories: 100% (256/256), done.
error: HEAD: invalid sha1 pointer c45fd8579e1f313fcd651df4cbafbf6c8f8edba6
error: refs/heads/master does not point to a valid object!
error: refs/remotes/origin/master does not point to a valid object!
notice: No default references
broken link from  commit f10ca5f9234acb473ee000414e2c7d4e939b5e57
              to    tree 08a537c82c15e09badb41540ceadfb6ac1a8bb31
dangling blob 03165e2de43b743cfe049c40d0ede67fcfb3cc50
missing tree 08a537c82c15e09badb41540ceadfb6ac1a8bb31
dangling blob …
Run Code Online (Sandbox Code Playgroud)

git

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

使用R中的dplyr/magrittr删除/删除列

如何在R中删除带有dplyr/magrittr的列?

在这里,我想删除超过50%NAs的列(当然这不起作用):

delNAcols <- function(x){ ifelse( mean(is.na(x))>0.5, NULL, x ) }
d <- data.frame(x=c(1,2,NA),y=c(NA,NA,4))
d %>% mutate_each(funs(delNAcols))
Run Code Online (Sandbox Code Playgroud)

两个答案(来自user3949008和akrun)都很好.

如果处理处于低位的开始,则可以使用两个答案的组合,由于短期和magrittr风格的最佳平衡,换句话说,最佳可读性:

d %>%
  sapply(function(x) mean(is.na(x)) < 0.5) %>% 
  extract(d,. )
Run Code Online (Sandbox Code Playgroud)

因为它的重用d如果它在后面的流程中不起作用.然后user3949008的答案可以在小的改变之后使用(以及小的可读性改进):

d %>% select_(.dots = names(.)[which(sapply(., function(x) mean(is.na(x)) < 0.5))])
Run Code Online (Sandbox Code Playgroud)

如果想让整个事情更简洁,那么就可以写出来

select_each <- function(df, fun) { df %>% sapply(fun) %>% extract(df,.) }
select_each <- function(df, fun) { df %>% select_(.dots = names(.)[which(sapply(., fun))]) }

d %>%
  select_each( function(x) mean(is.na(x)) < 0.5 )
Run Code Online (Sandbox Code Playgroud)

两个select_each功能在功能上相同.但是,我对它们进行了基准测试,第一个测试速度快了三倍.

r dplyr

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

使用Map而不是List了解foldLeft

我想知道foldLeft地图是如何工作的.如果我有一个List并使用零元素和函数调用foldLeft,我确实理解它是如何工作的:

val list1 = List(1,2,3)
list1.foldLeft(0)((a,b) => a + b)
Run Code Online (Sandbox Code Playgroud)

0用第一个元素添加零元素list1然后添加第二个元素,list1依此类推.因此输出成为新输入,第一个输入是零元素.

现在我得到了代码

val map1 = Map(1 -> 2.0, 3 -> 4.0, 5 -> 6.2) withDefaultValue 0.0
val map2 = Map(0 -> 3.0, 3 -> 7.0) withDefaultValue 0.0
def myfct(terms: Map[Int, Double], term: (Int, Double)): Map[Int, Double] = ???

map1.foldLeft(map2)(myfct)
Run Code Online (Sandbox Code Playgroud)
  1. 所以我的第一个元素是a Tuple2,但既然map2是a Map而不是a Tuple2,那么零元素是什么?
  2. 当我们有一个List,即list1,我们总是"采取下一个元素list1".什么是"下一个元素map1?它是另一对map1吗?

dictionary scala language-concepts foldleft

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

在熊猫数据框中随机插入NA的值-完全没有行丢失

如何在熊猫数据框中随机丢失某些值,如在熊猫数据框中随机插入NA的值, 确保没有行完全设置缺失值?

编辑:对不起,没有说明这再次明确(它是在引用虽然这个问题我):我需要能够指定多少百分比,例如10%的的细胞应该是NaN(或者说,由于靠近(例如,使用现有数据帧的大小可以达到10%),这与独立清除单元格(每单元边际概率为10%)相反。

python missing-data pandas

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

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

如何在枚举中添加方法?

我想在我的枚举中添加一个方法.

class Kerneltype(Enum):
    tube = 0
    subspace_KDE = 1
    deltashift = 2
    dist_sens_via_mass_1 = 3

    def aslist(self):
        return [self.tube, self.subspace_KDE, self.deltashift, self.dist_sens_via_mass_1]

    def fromint(self, int):
        return self.aslist()[int]
Run Code Online (Sandbox Code Playgroud)

不起作用.代替

Kerneltype.aslist()
Run Code Online (Sandbox Code Playgroud)

我目前要做的

[kt[1] for kt in ob.Kerneltype.__members__.items()]
Run Code Online (Sandbox Code Playgroud)

python enums

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

使用插值对 Pandas 中的时间序列进行上采样

我有一个

import pandas as pd
index = pd.date_range('1/1/2000', periods=9, freq='0.9S')
series = pd.Series(range(9), index=index)

>>> series
2000-01-01 00:00:00.000    0
2000-01-01 00:00:00.900    1
2000-01-01 00:00:01.800    2
2000-01-01 00:00:02.700    3
2000-01-01 00:00:03.600    4
2000-01-01 00:00:04.500    5
2000-01-01 00:00:05.400    6
2000-01-01 00:00:06.300    7
2000-01-01 00:00:07.200    8
Freq: 900L, dtype: int64
Run Code Online (Sandbox Code Playgroud)

现在我得到

>>> series.resample(rule='0.5S').head(100)
2000-01-01 00:00:00.000    0.0
2000-01-01 00:00:00.500    1.0
2000-01-01 00:00:01.000    NaN
2000-01-01 00:00:01.500    2.0
2000-01-01 00:00:02.000    NaN
2000-01-01 00:00:02.500    3.0
2000-01-01 00:00:03.000    NaN
2000-01-01 00:00:03.500    4.0
2000-01-01 00:00:04.000    NaN
2000-01-01 00:00:04.500    5.0 …
Run Code Online (Sandbox Code Playgroud)

python interpolation pandas

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