Hi Daniel,
If your data is stored in a matrix, the following should work (and be
fairly efficient):
#############
dat <- matrix(rnorm(100), nrow = 10)
dat[sample(1:10, 3), sample(1:10, 3)] <- NA
## create an index of missing values
index <- which(is.na(dat), arr.ind = TRUE)
## calculate the row means and "duplicate" them to assign to appropriate cells
dat[index] <- rowMeans(dat, na.rm = TRUE)[index[, "row"]]
## for documentation see
?which # particularly the arr.ind argument
?"[" # for extraction or selecting a subset to overwrite
#############
the only reason this does not work as is with data frames is because
of how they are indexed/subset. dat[index] does not work. The
required modification is probably fairly minimal, but if you are happy
to use a matrix, then its a moot issue.
HTH,
Josh
On Sun, Feb 27, 2011 at 3:25 PM, Daniel M. wrote:Hello,
I have some dataset, which i read it from external file using the (data <-
read.csv("my file location")) and read as a dataframe
is(data)
[1] "data.frame" "list" ? ? ? "oldClass" ? "vector"
but i have also converted this into a matrix and tried to apply my code but
didnt work.
Anyways, suppose i have the following data.
? ?data <- as.data.frame(matrix(rnorm(100), nrow = 10))
And let's put some missing values
? ?data[sample(1:10, 3), sample(1:10, 3)] <- NA
I want to replace all NA's by row averages or column averages of my matrix.
I tried to use(with my original data matrix)
? ?data[is.na(data)] <- rowMeans(data, na.rm = TRUE)
But got an error message of
? ? ? Error in rowMeans(data, na.rm = TRUE) : 'x' must be numeric
Then I converted ?data<- as.matrix(data)
? ? ? ? ? ? ? ? ?data<- as.numeric(data)
And applying my code
? ? data[is.na(data)] <- rowMeans(data, na.rm = TRUE)
Error message
? ? ?Error in rowMeans(data, na.rm = TRUE) :
?'x' must be an array of at least two dimensions
Then again i tried to convert it into Arrays....but the errors continues....
I Also tried the code
? ?data[is.na(data)] <- apply(data,1,mean)
But still didnt work out.
Can anyone pls help me as to how to fix it and get out of this, please?
Thank you very much
Daniel
? ? ? ?[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide
http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
--
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/