小编use*_*672的帖子

dplyr:将计数出现放入新变量中

想了解一下dplyr代码,但无法弄清楚这一点.见过这里所描述的许多变量(一个类似的问题,总结因素的计数与dplyr把值出现次数的计数横行到新的变数,如何做到在R里面有dplyr? ),但我的任务就是略小.
给定一个数据框,如何计算变量的频率并将其放在一个新变量中.

set.seed(9)
df <- data.frame(
    group=c(rep(1,5), rep(2,5)),
    var1=round(runif(10,1,3),0))
Run Code Online (Sandbox Code Playgroud)

然后我们有:

>df
   group var1
1      1    1
2      1    1
3      1    1
4      1    1
5      1    2
6      2    1
7      2    2
8      2    2
9      2    2
10     2    3
Run Code Online (Sandbox Code Playgroud)

想要第三列指示每组(group)var1发生多少次,在这个例子中,这将是:count =(4,4,4,4,1,1,3,3,3,1).我试过 - 没有成功 - 比如:

df %>%  group_by(group) %>% rowwise() %>% do(count = nrow(.$var1))
Run Code Online (Sandbox Code Playgroud)

解释非常感谢!

r dplyr

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

R:在dplyr :: mutate()中使用min()

require(plyr)
require(dplyr)    
set.seed(8)
    df <- 
      data.frame(
        v1 = runif(10, -1,1),
        v2 = runif(10, -1,1))
Run Code Online (Sandbox Code Playgroud)

问题:我怎样才能获得正确的值到min()功能的一部分mutate()-基本上,我想分配v3v1具有最小的划分v1v2.这不起作用:

  df <- 
         df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0))
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些非常简单的事情.

r min dplyr

17
推荐指数
1
解决办法
8787
查看次数

如何在R中使用ggplot2创建默认自定义主题

当我尝试使用ggplot2它来应用自定义主题时会出现如下错误:

Error in FUN("text"[[1L]], ...) : 
  Theme element 'text' has NULL property: family, face, size, hjust, vjust, angle, lineheight
Run Code Online (Sandbox Code Playgroud)

我想我必须错过一些基本的东西(我第一次尝试创建自定义主题).该主题基于以下内容创建theme_bw():

theme_new <- function(base_size = 12, base_family = "Helvetica"){
    theme_bw(base_size = base_size, base_family = base_family) %+replace%
    theme(
        line = element_line(colour="black"),
        text = element_text(colour="black"),
        axis.title = element_text(size = 14),
        axis.text = element_text(colour="black", size=8),
        strip.text = element_text(size=12),
        legend.key=element_rect(colour=NA, fill =NA),
        panel.grid = element_blank(),   
        panel.border = element_rect(fill = NA, colour = "black", size=1),
        panel.background = element_rect(fill = "white", colour = …
Run Code Online (Sandbox Code Playgroud)

themes r ggplot2

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

R:行方式dplyr :: mutate使用带有数据帧行并返回整数的函数

我试图使用自定义函数管道mutate语句.我看起来有点类似的SO帖子但是徒劳无功.假设我有一个这样的数据框(其中blob一些变量与特定任务无关,但是是整个数据的一部分):

df <- 
  data.frame(exclude=c('B','B','D'), 
             B=c(1,0,0), 
             C=c(3,4,9), 
             D=c(1,1,0), 
             blob=c('fd', 'fs', 'sa'), 
             stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

我有一个使用变量名的函数,所以根据exclude列中的值选择一些,例如计算未指定的变量的总和exclude(总是单个字符).

FUN <- function(df){
  sum(df[c('B', 'C', 'D')] [!names(df[c('B', 'C', 'D')]) %in% df['exclude']] )
}
Run Code Online (Sandbox Code Playgroud)

当我给出一行(第1行)时,FUN我得到预期的CD(和那些未提及的exclude),即4:

FUN(df[1,])
Run Code Online (Sandbox Code Playgroud)

如何在具有mutate的管道中进行类似操作(将结果添加到变量中s).这两次尝试不起作用:

df %>% mutate(s=FUN(.))
df %>% group_by(1:n()) %>% mutate(s=FUN(.))
Run Code Online (Sandbox Code Playgroud)

更新 这也不能按预期工作:

df %>% rowwise(.) %>% mutate(s=FUN(.))
Run Code Online (Sandbox Code Playgroud)

这是有原因的,但不在dplyr的mutate(和管道)中:

df$s <- sapply(1:nrow(df), function(x) FUN(df[x,]))
Run Code Online (Sandbox Code Playgroud)

row r dplyr mutate

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

R,使用dplyr :: filter()和%in%将列名作为参数传递给函数

我怎么能在类似问题的函数传递一个列名在这里,但使用dplyr链接和filter()一起%in%.

require(dplyr)
set.seed(8)
df <- data.frame(
  A=sample(c(1:3), 10, replace=T), 
  B=sample(c(1:3), 10, replace=T))
Run Code Online (Sandbox Code Playgroud)

如果想要获得A列为1或2的行,我可以这样做:

df %>% filter(A %in% c(1,2))
Run Code Online (Sandbox Code Playgroud)

我明白了:

  A B
1 2 3
2 1 2
3 1 3
4 2 1
5 1 1
6 1 3
Run Code Online (Sandbox Code Playgroud)

现在,我如何将它放在一个函数中,可以指定列,这不起作用:

fun1 <- function(x, column, n){
  res <- 
    x %>% filter(column %in% n)
  return(res)
}
fun1(df, A, c(1,2))
Run Code Online (Sandbox Code Playgroud)

r filter dplyr

7
推荐指数
1
解决办法
3611
查看次数

R根据多个条件获取行 - 使用dplyr和reshape2

df <- data.frame(
    exp=c(1,1,2,2),
  name=c("gene1", "gene2", "gene1", "gene2"),
    value=c(1,1,3,-1)
    )
Run Code Online (Sandbox Code Playgroud)

在尝试获得定制时dplyr,reshape2我偶然发现了一种基于几种条件选择行的"简单"方法.如果我想在实验1(== 1)name中具有value高于0的那些基因(变量)并且在实验2中exp同时value低于0; 在df中,这将是"gene2".当然必须有很多方法,例如每组条件的子集df(exp == 1&value> 0,exp == 2和value <0),然后加入这些子集的结果:

library(dplyr)    
inner_join(filter(df,exp == 1 & value > 0),filter(df,exp == 2 & value < 0), by= c("name"="name"))[[1]]
Run Code Online (Sandbox Code Playgroud)

虽然这个作品看起来非常akward的,我觉得这样的条件筛选在于在的心脏reshape2dplyr,但无法弄清楚如何做到这一点.有人可以在这里启发我吗?

conditional filtering r reshape2 dplyr

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

gitlab连接拒绝ssh端口22和443

在过去的几天里,我一直无法推送到远程(gitlab),它在此之前一直有效。我知道这个问题有 10 个类似的问题,也许答案就在其中的某个地方。然而,我一直在尝试许多建议的解决方案 - 但徒劳。

  • 当我推动时,我得到:

    ssh: connect to host gitlab.com port 22: Connection refused fatal: The remote end hung up unexpectedly

  • 本地位于宪法服务器上,这里的许多人都使用端口 22 主要用于 github,没有任何问题。这是否可能是我这边的防火墙设置可能与 gitlab 特别相关?管理员确保这不是简单的白名单问题。

  • 我的 gitlab 网址如下:

    origin git@gitlab.com:myname/myproject.git (fetch) origin git@gitlab.com:myname/myproject.git (push)

  • 我尝试使用替代的 ssh 格式更新 git-url:

    origin ssh://git@gitlab.com/myname/myproject.git (fetch) origin ssh://git@gitlab.com/myname/myproject.git (push)

  • 我已经尝试了端口 22 和替代端口 443 - 这是文件~/.ssh/config

    Host gitlab.com RSAAuthentication yes IdentityFile ~/.ssh/id_rsa

  • 选择:

    Host gitlab.com Hostname altssh.gitlab.com User git Port 443 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa

  • 我尝试过使用 https 连接(徒劳)。

  • 制作了新的 ssh 密钥(徒劳)。 …

git connection ssh gitlab

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

dplyr:使用链接来传递变量

我是新手,dplyr无法弄清楚如何控制变量来通过chaining(%>%)命令.简单的例子:该str_sub函数有三个参数 - 第一个是传递%>%但是如何获得最后两个?:

library(stringr)
library(dplyr)
df <- data.frame(V1 = c("ABBEDHH", "DEFGH", "EFGF", "EEFD"), 
                 V2=c(4, 2, 1, 1), V3=c(5, 2, 2, 1), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

在基地RI可以做:

with(df, str_sub(V1, V2, V3))
Run Code Online (Sandbox Code Playgroud)

得到:

## [1] "ED" "E"  "EF" "E" 
Run Code Online (Sandbox Code Playgroud)

如何链接这个?- 我试过了:

df %>% str_sub(V1, V2, V3) # Here V3 is unused arg since V1 is treated as 2nd arg

df %>% select(V1) %>% str_sub(V2, V3) # Here V2 and V3 are not recognized
Run Code Online (Sandbox Code Playgroud)

r chain stringr dplyr

5
推荐指数
1
解决办法
394
查看次数

在R:子集或dplyr :: filter中,带有来自vector的变量

df <- 
  data.frame(a=LETTERS[1:4],
             b=rnorm(4)
             )

vals <- c("B","D")
Run Code Online (Sandbox Code Playgroud)

我可以df使用以下值过滤/子集val:

dplyr::filter(df, a %in% vals)
subset(df, a %in% vals)
Run Code Online (Sandbox Code Playgroud)

两者都给出:

  a         b
2 B 0.4481627
4 D 0.2916513
Run Code Online (Sandbox Code Playgroud)

如果我在向量中有变量名称,例如:

> names(df)[1]
[1] "a"
Run Code Online (Sandbox Code Playgroud)

然后它不起作用 - 我猜因为它的引用

dplyr::filter(df, names(df)[1] %in% vals)
[1] a b
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)

你怎么做到这一点 ?

更新(如果它的dplyr :: tbl_df(df))

下面的答案适用于data.frames,但不适用于dplyr :: tbl_df包装数据:

df<-dplyr::tbl_df(df)
dplyr::filter(df, df[,names(df)[1]] %in% vals)
Run Code Online (Sandbox Code Playgroud)

不起作用(我认为tbl_df在df之上是一个简单的包装?)

这确实有效:

dplyr::filter(df, as.data.frame(df)[,names(df)[1]] %in% vals)
Run Code Online (Sandbox Code Playgroud)

最终更新:使用lazyeval :: interp与tbl_df()一起使用

请参阅下面的AndreyAkinshin的解决方案.

r subset dplyr

5
推荐指数
1
解决办法
9143
查看次数

按组滚动方式

我正在尝试对分组 ( dplyr::group_by) 的数据进行滚动意味着 - 我无法理解为什么这不起作用的原因:

set.seed(1)
library(dplyr)
library(zoo)
df <- data.frame(a=sample(LETTERS[1:2], replace= T, 10),
                 b=rnorm(20), stringsAsFactors = F)
df %>% 
  group_by(a) %>% 
  mutate(rollapply(b, 3, mean))
Run Code Online (Sandbox Code Playgroud)

我可以看到这里可以找到一个冗长的解决方案,但想知道为什么上面的方法不起作用

r mean zoo dplyr

5
推荐指数
1
解决办法
1899
查看次数

标签 统计

r ×9

dplyr ×8

chain ×1

conditional ×1

connection ×1

filter ×1

filtering ×1

ggplot2 ×1

git ×1

gitlab ×1

mean ×1

min ×1

mutate ×1

reshape2 ×1

row ×1

ssh ×1

stringr ×1

subset ×1

themes ×1

zoo ×1