标签: tidyverse

如何根据条件删除R中的重复行?

我有以下数据:

df <- data.frame(id = c("001", "001", "001", "002", "002", "003", "003"),
                 x = c(0, 0, 0, 0, 1, 0, 1))

 id x
001 0
001 0
001 0
002 0
002 1
003 0
003 1
Run Code Online (Sandbox Code Playgroud)

数据的性质使得某些数据可能id只有行x = 0。对于x = 1给定的id,它只出现一次,并且也出现在该 的最后一行id。我想删除每个 的重复行id,但对于x = 1an id,我只想保留该行。

所需的输出:

 id x
001 0
002 1
003 1
Run Code Online (Sandbox Code Playgroud)

tidyverse优选解决方案。谢谢!

r dplyr data-cleaning tidyverse data-wrangling

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

将带有列表列的小标题保存到磁盘

我想将tibble具有列表列的磁盘保存到磁盘(仅供以后在R中使用)。理想情况下,我想要一种快速的二进制格式,例如feather,但是它似乎不支持list cols:

test <- tibble(a= list(c(1,2), c(3,4)))
feather::write_feather(test, 'test.csv')
Run Code Online (Sandbox Code Playgroud)

writeFeather(x,path)中的错误:未实现:a是一个列表

我期望readr程序包中的方法能够处理此问题,但是我尝试过的方法似乎都无法解决。

我该怎么做呢?

r tidyverse feather

0
推荐指数
1
解决办法
3404
查看次数

用tidytext删除停用词

使用tidytext,我有这个代码:

data(stop_words)
tidy_documents <- tidy_documents %>%
      anti_join(stop_words)
Run Code Online (Sandbox Code Playgroud)

我希望它使用包中内置的停用词将名为tidy_documents的数据帧写入同名的数据帧中,但如果它们在stop_words中,则删除单词.

我收到此错误:

错误:没有常见变量.请指定by参数.追溯:

1. tidy_documents %>% anti_join(stop_words)
2. withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
3. eval(quote(`_fseq`(`_lhs`)), env, env)
4. eval(expr, envir, enclos)
5. `_fseq`(`_lhs`)
6. freduce(value, `_function_list`)
7. withVisible(function_list[[k]](value))
8. function_list[[k]](value)
9. anti_join(., stop_words)
10. anti_join.tbl_df(., stop_words)
11. common_by(by, x, y)
12. stop("No common variables. Please specify `by` param.", call. = FALSE)
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse tidytext

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

ggplot缩放单位格式千位小数

Complete noob to R/RStudio/tidyverse. Using R 3.4.0 "You Stupid Darkness" / RStudio 1.0.136. Trying to format y axis to display thousands to 1 decimal place. I'm using : scale_y_continuous(labels = scales::unit_format("k", 1e-3)) but displays as a whole number. How can I display 1 decimal place so instead of 30k, I get 30.1k?

Thx

r ggplot2 rstudio tidyverse

0
推荐指数
1
解决办法
1983
查看次数

数据清理 - 转换为tidyverse

我很好奇以下代码是否可以转换为tidyverse代码.我试过dplyr :: mutate并且无法让它工作得很好.

df$Gender[df$Gender == "M"] <- "Man"
df$Gender[df$Gender == "Male"] <- "Man"
df$Gender[df$Gender == "F"] <- "Woman"
df$Gender[df$Gender == "Female"] <- "Woman"
df$Gender[df$Gender == "M & F"] <- "Man and Woman"
df$Gender[df$Gender == "Male & Female"] <- "Man and Woman"
Run Code Online (Sandbox Code Playgroud)

r data-munging tidyverse

0
推荐指数
1
解决办法
132
查看次数

管道中的map2()函数

我得到了如下的小标题结果

> df
# A tibble: 6 x 5
terms results              R.squared        minP  maxP
<dbl> <list>                   <dbl>       <dbl> <dbl>
1    11 <tibble [6 x 9]>         0.589 0.269       0.939
2    10 <tibble [49 x 9]>        0.589 0.181       0.999
3     9 <tibble [200 x 9]>       0.589 0.0655      1.000
4     8 <tibble [527 x 9]>       0.585 0.000154    0.997
5     7 <tibble [972 x 9]>       0.565 0.0000607   0.998
6     6 <tibble [1,273 x 9]>     0.542 0.000000977 0.998    
Run Code Online (Sandbox Code Playgroud)

在中保存了一些建模信息<list> tibble results,其中包含几列名称,例如“公式”,“ maxp”,“ R.squared”等。 …

r purrr tidyverse

0
推荐指数
1
解决办法
907
查看次数

R:传播向量的有效方法

是否有一种有效的编程方法来解决以下任务?

想象一下以下向量:

A<-[a,b,c...k]
Run Code Online (Sandbox Code Playgroud)

并希望通过以下方式传播它:让我们从例如n = 2开始

B<-[a,a,b,b,c...,k,k]
Run Code Online (Sandbox Code Playgroud)

现在n = 4或任何数字大于1

C<-[a,a,a,a,b,...,k,k,k,k]
Run Code Online (Sandbox Code Playgroud)

通过循环来解决这个问题看起来很简单,但是我错过/可以使用任何基于函数或矢量的操作吗?Tidyverse解决方案(在管道中使用它)对我来说是最好的解决方案.

(很难对这项任务进行研究,因为我是R中的新手并且没有正确的搜索条件.任何帮助都会有所帮助.)

r function vector tidyverse

0
推荐指数
1
解决办法
48
查看次数

如何使用dplyr同时交换两列中的值

我有以下数据框:

df <- structure(list(sqn = c("FOO", "BAR"), start = c(1, 99), end = c(531, 
1), strand = c("+", "-")), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

看起来像:

# A tibble: 2 x 4
  sqn   start   end strand
  <chr> <dbl> <dbl> <chr> 
1 FOO       1   531 +     
2 BAR      99     1 -     
Run Code Online (Sandbox Code Playgroud)

我想做的是交换if startendcolumn中的值strand == "-"。期望的结果是这样的:

# A tibble: 2 x 4
  sqn   start   end strand
  <chr> <dbl> <dbl> <chr> 
1 FOO       1   531 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse

0
推荐指数
1
解决办法
109
查看次数

使用Rlang使用data.table汇总列

我在新data.table
如何让同样的事情data.tablerlang

library(tidyverse)
library(data.table)

gr <- "Species"
col <- "Petal.Length"

iris %>% 
  group_by(!!rlang::sym(gr)) %>% 
  summarise_at(vars(!!rlang::sym(col)),sum)

iris1 <- iris 
setDT(iris1)
iris1[,sum(!!rlang::sym(col)),by=!!rlang::sym(gr)]
Run Code Online (Sandbox Code Playgroud)

r data.table tidyverse rlang

0
推荐指数
1
解决办法
72
查看次数

将数据框列拆分为多列

假设我有一个看起来像这样的数据框:

gene    drug    log2FC
Ubb    Naloxone    0.6375514
Tuba1a   Naloxone    0.5827224
Scd1    Naloxone    -0.7249997
Ubb    Aspirin    0.8000
Tuba1a    Aspirin  0.73324
Scd1    Aspirin    0.2497
Ubb    Haldol    0.0375
Tuba1a    Haldol    0.25824
Scd1    Haldol    -0.0249997
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以为每种独特的药物创建列,所以我留下了这样的内容:

gene    Naloxone_log2FC    Asirin_Log2FC    Haldol_log2FC
Ubb     0.6375514    0.73324    0.0375
Tuba1a  ...
Scd1    ...

Thanks!
Run Code Online (Sandbox Code Playgroud)

r dataframe tidyverse

0
推荐指数
1
解决办法
42
查看次数