Я пытаюсь обновить кучу столбцов, добавив и вычитая SD для каждого значения столбца. SD для данного столбца.Изменение значений нескольких элементов столбца для фрейма данных в R
Ниже приведен воспроизводимый код, который я придумал, но я считаю, что это не самый эффективный способ сделать это. Может ли кто-нибудь предложить мне лучший способ сделать это?
По существу, имеется 20 строк и 9 столбцов. Мне нужны только два отдельных кадра данных, которые имеют значения для каждого столбца, скорректированные путем добавления SD этого столбца, а другое путем вычитания SD из каждого значения столбца.
##Example
##data frame containing 9 columns and 20 rows
Hi<-data.frame(replicate(9,sample(0:20,20,rep=TRUE)))
##Standard Deviation calcualted for each row and stored in an object - i don't what this objcet is -vector, list, dataframe ?
Hi_SD<-apply(Hi,2,sd)
#data frame converted to matrix to allow addition of SD to each value
Hi_Matrix<-as.matrix(Hi,rownames.force=FALSE)
#a new object created that will store values(original+1SD) for each variable
Hi_SDValues<-NULL
#variable re-created -contains sum of first column of matrix and first element of list. I have only done this for 2 columns for the purposes of this example. however, all columns would need to be recreated
Hi_SDValues$X1<-Hi_Matrix[,1]+Hi_SD[1]
Hi_SDValues$X2<-Hi_Matrix[,2]+Hi_SD[2]
#convert the object back to a dataframe
Hi_SDValues<-as.data.frame(Hi_SDValues)
##Repeat for one SD less
Hi_SDValues_Less<-NULL
Hi_SDValues_Less$X1<-Hi_Matrix[,1]-Hi_SD[1]
Hi_SDValues_Less$X2<-Hi_Matrix[,2]-Hi_SD[2]
Hi_SDValues_Less<-as.data.frame(Hi_SDValues_Less)
Великий - я рассматриваю это как развертку, применяя SD по столбцам (отсюда и элемент 2) к кадру данных. Но где мы указываем вычитание SD. А как насчет добавления SD к значениям? – oivemaria
снова, посмотрите на '? Sweep', он показывает использование:' sweep (x, MARGIN, STATS, FUN = "-", check.margin = TRUE, ...) '. Функция по умолчанию - «-», измените ее на «+», и она добавит «STATS» к значениям. –
да, спасибо. Я понял это в конечном итоге – oivemaria