我正在尝试在数据框的行上应用一个函数,并根据列中每个元素的值返回一个值。我宁愿传递整个数据框而不是命名每个变量,因为实际代码有很多变量——这是一个简单的例子。
我已经尝试过purrr map_dbl
,rowwise
但都无法工作。请问有什么建议吗?
#sample df
df <- data.frame(Y=c("A","B","B","A","B"),
X=c(1,5,8,23,31))
#required result
Res <- data.frame(Y=c("A","B","B","A","B"),
X=c(1,5,8,23,31),
NewVal=c(10,500,800,230,3100)
)
#use mutate and map or rowwise etc
Res <- df %>%
mutate(NewVal=map_dbl(.x=.,.f=FnAdd(.)))
Res <- df %>%
rowwise() %>%
mutate(NewVal=FnAdd(.))
#sample fn
FnAdd <- function(Data){
if(Data$Y=="A"){
X=Data$X*10
}
if(Data$Y=="B"){
X=Data$X*100
}
return(X)
}