【发布时间】:2020-10-20 20:03:42
【问题描述】:
我有一个如下的数据框:
combo_2 combo_4 combo_7 combo_9
12 23 14 17
21 32 41 71
2 3 1 7
1 2 4 1
21 23 14 71
2 32 1 7
每列有两个个位数的值和两个由个位数值按可能顺序组成的两位数值。
我正在尝试确定如何替换数据框中的某些值,以便只有一个版本的两位数值。例如,第一列中所有 21 的值都应为 12。第二列中所有 32 的值都应为 23。
我知道我可以使用以下代码来做这样的事情:
df <- df %>%
mutate_at(vars(combo_2, combo_4, combo_7, combo_9), function(x)
case_when(x == 21 ~ 12, x == 32 ~ 23, x == 41 ~ 14, x == 71 ~ 17))
这样做的问题是它给了我一个数据框,它在指定时包含正确的值,但将所有其他值保留为 NA。生成的数据帧仅包含 21、32、41 和 71 所在的值。我知道我可以通过指定每个值来解决这个问题,例如 x == 1 ~ 1。但是,我有很多值,并且希望只指定我想要更改的值。
如何替换数据框中的多个值而不使所有其他值变为 NA?有没有办法让我替换我想要替换的值,同时保持其他值相同而不直接指定这些值?
【问题讨论】:
-
df1[ df1 == 21 ] <- 12怎么样? -
当我有 1 列和 1 个值要替换时效果很好,但我试图找到一种方法同时对多列执行此操作并且当我有几个不同的值要替换时。跨度>