我有一个数据集,其中包含多列(全部用零填充)和一个数字索引列。现在我想替换与列索引匹配的列中的零(1 =第一列,2 =第二列...)简化示例:
input <- tibble(X1 = c(0,0,0,0), X2 = c(0,0,0,0), X3 = c(0,0,0,0), index = c(1,2,2,3))
output <- tibble(X1 = c(1,0,0,0), X2 = c(0,1,1,0), X3 = c(0,0,0,1), index = c(1,2,2,3))
我已经找到了一个解决方案,但我很好奇是否有更好/更简单的方法来编写它(也许是以R为基数)。
input %>%
select(index) %>%
bind_cols(map2_dfc(.x = c('X1', 'X2', 'X3'),
.y = 1:3,
.f = ~input %>%
transmute(!!sym(.x) := if_else(.y == index, 1, 0))))`
3条答案
按热度按时间rwqw0loc1#
如果使用
data.frames
和底数R,则可以执行以下操作r1wp621o2#
2w2cym1i3#
下面是使用
map2_dfc
的方法创建于2023年1月25日,使用reprex v2.0.2