首页 > 解决方案 > 如何将数据框列除以 3,但根据另一列内容跳过除法

问题描述

我想将两个数字列除以 3,但不是第三个字符列。

当前数据框:

col1   col2   col3
100    10     cat
200    20     dog
300    30     NA

desired:
col1   col2   col3
10      1     cat
20      2     dog
300     30     NA

我当前的代码不基于 col3:

DB <- BD %>% mutate(Col1=Col1/3) %>% mutate(Col2s=Col2/3)

请帮忙解决。谢谢

标签: rdataframeaggregatedplyr

解决方案


这是一个想法dplyr

library(dplyr)

df %>% 
 mutate_at(vars(-3), list(~ifelse(!is.na(col3), ./10, .)))

#  col1 col2 col3
#1   10    1  cat
#2   20    2  dog
#3  300   30 <NA>

推荐阅读