R 如何为列中的不同值插补缺失值
我有一个df: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”放在引号之间。 我从中获得了灵感和部分代码。我所说的代码部分
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")