我正尝试通过对多个列应用相同的转换来创建新列。
示例代码如下:
df %>%
mutate(
use_ = case_when(
use %in% c(1, 2, 3) ~ 0,
use %in% c(4, 5) ~ 1),
complex_ = case_when(
complex %in% c(1, 2, 3) ~ 0,
complex %in% c(4, 5) ~ 1),
easy_ = case_when(
easy %in% c(1, 2, 3) ~ 0,
easy %in% c(4, 5) ~ 1)
)
我实际上是在尝试在R中复制SAS在阵列中可以轻松完成的一些事情。示例代码如下:
array orig (*) use complex easy;
array new (*) use_ complex_ easy_;
do i=1 to dim(new);
if orig(i)=. then new(i)=.;
else if orig(i) in (1,2,3) then new(i)=0;
else if orig(i) in (4,5) then new(i)=1;
end;
drop i;
我创建了一个函数
recoding_fn <- function(a){
a_ = case_when(
a %in% c(1, 2, 3) ~ 0,
a %in% c(4, 5) ~ 1
)
return(a_)
}
当我应用到一个列时,它工作了,但是列名变成了“recoding_fn(use)”,这不完全是我想要的。
df %>%
mutate(recoding_fn(use))
另一个问题是如何应用该函数(或任何其他策略),以便它对我感兴趣的三列(use、complex、easy)进行重新编码。
这是可以在mutate中实现的吗?
我很感激你的帮助。谢谢。
1条答案
按热度按时间uqzxnwby1#
感谢@JonSpring的回答: