小编Rya*_*yan的帖子

使用 dplyr 有条件地将列中的值替换为另一列中的值

我非常努力地寻找这个问题的答案,如果它是重复的,我深表歉意。

我将制作一些虚拟数据来解释我的问题。

tibble(a=c(0.1, 0.2, 0.3), sample1 = c(0, 1, 1), sample2 = c(1, 1, 0))

# A tibble: 3 x 3
      a sample1 sample2
 <dbl>   <dbl>   <dbl>
1   0.1       0       1
2   0.2       1       1
3   0.3       1       0
Run Code Online (Sandbox Code Playgroud)

如何有条件地更改Sample1Sample2列中的值,以便如果它们等于 1,则它们采用a的值。

生成的 tibble 应该如下所示:

# A tibble: 3 x 3
      a sample1 sample2
 <dbl>   <dbl>   <dbl>
1   0.1       0     0.1
2   0.2     0.2     0.2
3   0.3     0.3       0
Run Code Online (Sandbox Code Playgroud)

理想情况下,我不想对每个单独的示例列执行此操作(我有 >100 个示例列),因此循环列的方法会更好(尽管我知道循环是魔鬼)。

感谢您的帮助!

r dplyr tidyverse

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

对数刻度上的 scale_fill_viridis_c 颜色条

我希望这不是重复的,但我不能在互联网上搜索更长的时间。我真的很想生成一个热图,但颜色条要在对数刻度上。我不一定要将我的值转换为日志,而是更改颜色条,使其从0, 0.01, 0.1, 1, 10, 100. 我包含了一个 reprex,它显示了我正在使用的数据示例,下面是我希望重述的论文中的一个数字。

library(tidyverse)

my_data <- tibble(sample_name = rep(c("A", "B", "C"), 3),
                  sample_genus = c(rep("Genus1", 3), rep("Genus2", 3),rep("Genus3", 3)),
                  sample_abundance = c(0,5,45,0.3,0.01,15,1,8,89))

ggplot(data = my_data, aes(x = sample_name,
                           y = sample_genus,
                           fill = sample_abundance)) +
  geom_tile() +
  scale_fill_viridis_c(limits = c(0, 100))
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2019 年 8 月 16 日创建

热图图像

r ggplot2

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

标签 统计

r ×2

dplyr ×1

ggplot2 ×1

tidyverse ×1