R 如何为列中的不同值插补缺失值

R 如何为列中的不同值插补缺失值,r,function,if-statement,R,Function,If Statement,我有一个df: Context <- c(HUM, HUM, DEV, HUM, DEV, HUM, DEV) Amount <- c(100, 150, NA, NA, 500, 150, 600) 然后我为HUM和Dev分配了平均值 mean_hum <- 133 mean_dev <- 550 mean\u-hum我相信下面的代码符合您的要求。 首先,您提供的数据是错误的,您必须将“HUM”和“DEV”放在引号之间。 我从中获得了灵感和部分代码。我所说的代码部分

我有一个df:

Context <- c(HUM, HUM, DEV, HUM, DEV, HUM, DEV)
Amount <- c(100, 150, NA, NA, 500, 150, 600)
然后我为HUM和Dev分配了平均值

mean_hum <- 133
mean_dev <- 550

mean\u-hum我相信下面的代码符合您的要求。
首先,您提供的数据是错误的,您必须将
“HUM”
“DEV”
放在引号之间。
我从中获得了灵感和部分代码。我所说的代码部分是helper函数
impute.mean

impute.mean <- function(x) replace(x, is.na(x), mean(x, na.rm = TRUE))

df %>%
    group_by(Context) %>%
    mutate(impute_amount = impute.mean(Amount))
## A tibble: 7 x 3
## Groups:   Context [2]
#  Context Amount impute_amount
#  <fct>    <dbl>         <dbl>
#1 HUM       100.          100.
#2 HUM       150.          150.
#3 DEV        NA           550.
#4 HUM        NA           133.
#5 DEV       500.          500.
#6 HUM       150.          150.
#7 DEV       600.          600.
impute.mean%
分组依据(上下文)%>%
突变(插补量=插补平均值(量))
##一个tibble:7x3
##分组:上下文[2]
#上下文金额插补金额
#               
#1哼哼100。100
#2哼150。150
#3德夫纳550。
#4哼娜133。
#5 DEV 500。500
#6哼150。150
#7 DEV 600。600
数据

df <-
structure(list(Context = structure(c(2L, 2L, 1L, 2L, 1L, 2L, 
1L), .Label = c("DEV", "HUM"), class = "factor"), Amount = c(100, 
150, NA, NA, 500, 150, 600)), .Names = c("Context", "Amount"), row.names = c(NA, 
-7L), class = "data.frame")

df
}if(Context==“Dev”){
}else if etc
或在另一代码行中启动
if
。这是一个投票关闭原因的典型例子(简单的打字错误)。我现在使用空格btw两个if语句,但现在代码找不到我的列上下文?错误:找不到对象“上下文”-非常感谢-这确实有帮助:-)
impute.mean <- function(x) replace(x, is.na(x), mean(x, na.rm = TRUE))

df %>%
    group_by(Context) %>%
    mutate(impute_amount = impute.mean(Amount))
## A tibble: 7 x 3
## Groups:   Context [2]
#  Context Amount impute_amount
#  <fct>    <dbl>         <dbl>
#1 HUM       100.          100.
#2 HUM       150.          150.
#3 DEV        NA           550.
#4 HUM        NA           133.
#5 DEV       500.          500.
#6 HUM       150.          150.
#7 DEV       600.          600.
df <-
structure(list(Context = structure(c(2L, 2L, 1L, 2L, 1L, 2L, 
1L), .Label = c("DEV", "HUM"), class = "factor"), Amount = c(100, 
150, NA, NA, 500, 150, 600)), .Names = c("Context", "Amount"), row.names = c(NA, 
-7L), class = "data.frame")