簡體   English   中英

R函數將均值的3個標准偏差內的值轉換為二進制

[英]R function to convert values within 3 standard deviations of mean to binary

我是R的新手,我的任務是創建一個函數來比較和轉換從模擬網絡中提取的數據以分析用戶模式。

R app應該計算使用的每個協議的和,和的平均值和和的標准偏差。 該函數當前為:

> total[total == 0] <- NA
res2 <- do.call(`data.frame`,
                aggregate(values~ind, stack(total), 
                          FUN=function(x) c(Total=sum(x, na.rm=FALSE), Mean=mean(x) SD=sd(x)))  

如果用戶的協議計數在“平均值-3sd <計數<平均值+ 3sd”以內,則使用另一個函數將該值轉換為1

> nm1 <- setdiff(colnames(total), "row.names")
output[,nm1] <-(res2$Mean-3SD[col(total[,nm1])] >total[,nm1] >res2$Mean-3SD[col(total[,nm1])])+0 

這是比較的正確方法嗎?

謝謝

編輯:

運行代碼時,它顯示:

Error: unexpected symbol in "output[,nm1] <-(res2$Mean-3SD"

R無法理解A < B < C as這樣A < B < C雙重不等式,因為<及其族是二元運算符。 因此,以上內容應轉換為A < B & B < C以在語法上有效。

現在,您沒有提供可復制的示例,但是對於您而言,該行

output[,nm1] <- (res2$Mean-3SD[col(total[,nm1])] > total[,nm1] > res2$Mean-3SD[col(total[,nm1])])+0 

應該是這樣的

output[,nm1] <- 
 (res2$Mean - 3*SD[col(total[,nm1])] > total[,nm1] & 
    total[,nm1] > res2$Mean - 3*SD[col(total[,nm1])]) + 0 

據我所知。 有幫助嗎?

編輯:另外,正如RomanLuštrik在評論中所說,您還應該記住顯式乘法*

暫無
暫無

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

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