Question

I have the following data set in Sheet1 of an XLSX file data.xlsx:

enter image description here

Prop1   Prop2   Prop3   Value1  Value2  Value3
A       B       C       1       2       3
D       E       F       4       5       6
G       H       I       7       8       9

I'm reading in the data use the xlsx package via

> df <- read.xlsx(
+     file = 'data.xlsx',
+     sheetName = 'Sheet1',
+     header = TRUE)

Now I want to calculate the median of the entire set of values (1,...,9; across rows 1-3 and columns 4-6). However, I'm unable to coerce the data to be numeric.

> median(as.numeric(df[,c(4:6)]))
Error in median(as.numeric(df[, c(4:6)])) : 
  (list) object cannot be coerced to type 'double'

How can determine the median of this set?

Était-ce utile?

La solution

One approach is to untangle or unlist the data frame before calculating the median:

> df <- data.frame(
+     Prop1 = c('A','B','C'), Prop2 = c('D','E','F'), Prop3 = c('G','H','I'),
+     Value1 = c(1:3), Value2 = c(4:6), Value3 = c(7:9))
> df
  Prop1 Prop2 Prop3 Value1 Value2 Value3
1     A     D     G      1      4      7
2     B     E     H      2      5      8
3     C     F     I      3      6      9
> df.median <- median(unlist(df[,c(4:6)]))
> df.median
[1] 5
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top