一个能够使用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流方式执行此操作?
我想将 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) 我用牛图制作了一个网格:
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 做到这一点吗?
重要提示:我希望能够设置标签字体的大小。
当尝试承诺时
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) 如何在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功能在功能上相同.但是,我对它们进行了基准测试,第一个测试速度快了三倍.
我想知道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)
Tuple2,但既然map2是a Map而不是a Tuple2,那么零元素是什么?List,即list1,我们总是"采取下一个元素list1".什么是"下一个元素map1?它是另一对map1吗?如何在熊猫数据框中随机丢失某些值,如在熊猫数据框中随机插入NA的值, 但确保没有行完全设置缺失值?
编辑:对不起,没有说明这再次明确(它是在引用虽然这个问题我):我需要能够指定多少百分比,例如10%的的细胞应该是NaN(或者说,由于靠近(例如,使用现有数据帧的大小可以达到10%),这与独立清除单元格(每单元边际概率为10%)相反。
...因为我无法fancyimpute在https://anaconda.org/search上找到
我想在我的枚举中添加一个方法.
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) 我有一个
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)