簡體   English   中英

按因子列計算data.frame組中的變量

[英]Impute variables within a data.frame group by factor column

我有一個data.frame包含數字列,這些列具有我希望通過...來計算缺失值的因子級別...讓我解釋一下。

part   id   value
a      1     23.4
a      2     23.8
a      3     45.6
a      4     34.7
a      5     Na
b      1     45.2
b      2     34.6
b      3     Na
b      4     30.9
b      5     28.1

我想用部件的平均值來估算NA值。 因此,對於a部分,我想將id 5缺失值與part a中的id 1-4的平均值相比較,並且對於b部分相同,將缺少的id3與b部分中的id的平均值相等。

我需要在許多列中執行此操作(想象有更多的值列)。 所以也許適用於功能等。

read.table/read.csv使用na.strings參數,我們可以將缺失值轉換為實際NA ,從而將'value'列讀為'numeric'。 使用dplyr ,我們可以replace該列的mean更改多個值列中的NAs

library(dplyr)
df1 %>%
    group_by(part) %>%
    mutate_each(funs(replace(., which(is.na(.)), mean(., na.rm=TRUE))), 
       starts_with('value'))

或者data.table的類似選項

library(data.table)
nm1 <- grep('value', names(df1))
setDT(df1)[, (nm1) := lapply(.SD,  function(x) replace(x,
     which(is.na(x)), mean(x, na.rm=TRUE))), by = part,.SDcols=nm1]

數據

df1 <- read.table(text="part   id   value
a      1     23.4
a      2     23.8
a      3     45.6
a      4     34.7
a      5     Na
b      1     45.2
b      2     34.6
b      3     Na
b      4     30.9
b      5     28.1", header=TRUE, na.strings="Na", stringsAsFactors=FALSE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM