【发布时间】:2015-09-24 13:42:23
【问题描述】:
目标是转换数据框的列。示例如下:
df <- data.frame( fact=c("dog",2,"NA",0,"cat",1,"Cat"),
value=c(4,2,6,0,9,1,3) ); df$fact <- as.factor(df$fac)
func <- function(data,fac,val){
data <- data %>%
mutate_(fac= interp(~tolower(fac), fac=as.name(fac)) ) %>%
mutate_(val= interp(~ifelse(fac=='cat',1*val,
ifelse(fac=='dog',2*val,0)), fac=as.name(fac), val=as.name(val)))
return(data) }
电话:
new.df <- func(df,"fact","value")
fact value fac val
1 dog 4 dog 8
2 2 2 2 0
3 NA 6 na 0
4 0 0 0 0
5 cat 9 cat 9
6 1 1 1 0
7 Cat 3 cat 0
存在 2 个问题:(1)- 与“Cat”关联的值为 false;应该是 3*1=3
(2)- 理想情况下,调用返回原始 data.frame df 以及转换后的 fact 和 value 变量。
有什么想法吗?谢谢各位。
编辑:请注意df 有另一列third,它应该不受对fact 和value 的操作的影响。
【问题讨论】: