我有一张表,其中有一些缺失的数据,我想根据某些条件替换其他一些相关数据的平均值。我有一些玩具数据可以显示下面的问题:
var1 var2 var3
123.1 2.1 113
166.5 2.1 113
200.3 2.1 112
NA 2.1 113
NA 2.1 NA
212.1 3.3 112
... ... ...
我想要做的是能够在var1
的平均值为va1
的情况下填写var2
的NA值,并且var3
和var1
var1
。
即,对于var3
列中的第一个NA,它在var2和var3上与第一个和第二个条目匹配,因此这将得到(123.1 + 166.5)/ 2的值。
var1
列中的第二个NA缺少var2 = 2.1.
信息,因此会给出means <- tapply(var2, var3, mean, na.rm=T)
var1[is.na(var1)] <- means[match(var3[is.na(var1)], sort(unique(var3)))]
var oauthOptions = {
client_id: '<My client ID value>',
redirect_uri: '<My reply url>',
response_type: 'code',
prompt: 'admin_consent',
resource: encodeURIComponent('https://graph.microsoft.com/')
};
var oauthUrl = 'https://login.microsoftonline.com/b678e2cc-6ccc-44a6-9802-176bc170d680/oauth2/authorize?api-version=1.0'
+ '&response_type=' + oauthOptions.response_type
+ '&redirect_uri=' + oauthOptions.redirect_uri
+ '&client_id=' + oauthOptions.client_id
+ '&prompt=' + oauthOptions.prompt
+ '&resource=' + oauthOptions.resource;
window.location.href = oauthUrl;
值的平均值
我对R比较新,我似乎无法让条件逻辑正确 - 提前感谢!
答案 0 :(得分:3)
我想做的是能够用var2的平均值填充var1的NA值,如果它们都具有相同的var3。
嗯......我不认为这是你想要的,但要做到这一点:
override func viewDidLoad() { super.viewDidLoad() var gamescore = PFObject(className:"_User")
gamescore["Score"] = self.Label.text
gamescore.saveInBackgroundWithBlock {
(success: Bool, error: NSError?) -> Void in
if (success) {
} else {
}
}
答案 1 :(得分:3)
你应该做多次插补:
DF <- read.table(text = "var1 var2 var3
123.1 2.1 113
166.5 2.1 113
200.3 2.1 112
NA 2.1 113
NA 2.1 NA
212.1 3.3 112 ", header = TRUE)
library(mice)
impDF <- mice(DF)
plot(impDF)
comDF <- complete(impDF, "long")
library(data.table)
setDT(comDF)
comDF[, setNames(c(lapply(.SD, mean), lapply(.SD, sd)),
c(paste0("var", 1:3), paste0("SDvar", 1:3))),
by = .id, .SDcols = paste0("var", 1:3)]
# .id var1 var2 var3 SDvar1 SDvar2 SDvar3
#1: 1 123.10 2.1 113.0 0.00000 0 0.0000000
#2: 2 166.50 2.1 113.0 0.00000 0 0.0000000
#3: 3 200.30 2.1 112.0 0.00000 0 0.0000000
#4: 4 173.70 2.1 113.0 34.80718 0 0.0000000
#5: 5 174.14 2.1 112.2 46.84131 0 0.4472136
#6: 6 212.10 3.3 112.0 0.00000 0 0.0000000
显然,使用更多数据可以更好地工作,其他插补方法可能会产生更好的结果。研究文档。