R数据帧-用基于条件的计算值替换0
数据帧:R数据帧-用基于条件的计算值替换0,r,R,数据帧: y <- c(1,2,3,1,2,3,1,2,3,1) Cal <- c(0,0,0,0,0,1,1,1,1,1) x <- c(seq(20,38,2)) df <- data.frame(y,x,Cal) 我想做的是用基于x的每个y的平均值替换Cal列中的0。例如,在第1行中,0将替换为1*20+1*26+1*32+1*38/4。y轴上的2和3相同 使用dplyr的解决方案 replacedf$Cal,df$Cal==0,avedf$y*df$x,df$
y <- c(1,2,3,1,2,3,1,2,3,1)
Cal <- c(0,0,0,0,0,1,1,1,1,1)
x <- c(seq(20,38,2))
df <- data.frame(y,x,Cal)
我想做的是用基于x的每个y的平均值替换Cal列中的0。例如,在第1行中,0将替换为1*20+1*26+1*32+1*38/4。y轴上的2和3相同 使用dplyr的解决方案
replacedf$Cal,df$Cal==0,avedf$y*df$x,df$y,FUN=mean[df$Cal==0]嗨,我想代码应该是replacedf$Cal,df$Cal==0,avedf$y/df$y*df$x,df$y,FUN=mean[df$Cal==0]
library(dplyr)
df2 <- df %>%
group_by(y) %>%
mutate(Cal = ifelse(Cal == 0, mean(y * x), Cal))
df2
# A tibble: 10 x 3
# Groups: y [3]
y x Cal
<dbl> <dbl> <dbl>
1 1 20 29
2 2 22 56
3 3 24 90
4 1 26 29
5 2 28 56
6 3 30 1
7 1 32 1
8 2 34 1
9 3 36 1
10 1 38 1