I have a frequency table, counting the frequency of elements in a vector
a = table(c(0,1,1,1,0,2,2,4,1,2,3,2,1,2,3,1,1,1,2,3,4,1,1,0))
a
# 0 1 2 3 4
# 3 10 6 3 2
I know I can access the name by names(a). But when I tried to access the values of the SECOND row
a[1, "0"]
# Error in a[1, "0"] : incorrect number of dimensions
a[1, 1]
# Error in a[1, 1] : incorrect number of dimensions
To calculate frequency, divide the number of times the event occurs by the length of time. Example: Anna divides the number of website clicks (236) by the length of time (one hour, or 60 minutes). She finds that she receives 3.9 clicks per minute.
The frequency (f) of a particular value is the number of times the value occurs in the data. The distribution of a variable is the pattern of frequencies, meaning the set of all possible values and the frequencies associated with these values. Frequency distributions are portrayed as frequency tables or charts.
To access the table values, we can use single square brackets. For example, if we have a table called TABLE then the first element of the table can accessed by using TABLE[1].
This table is actually an array.
x <- c(0,1,1,1,0,2,2,4,1,2,3,2,1,2,3,1,1,1,2,3,4,1,1,0)
(a <- table(x))
#
# 0 1 2 3 4
# 3 10 6 3 2
class(unclass(a))
# [1] "array"
Its names are on top, and values on bottom.
names(a)
[1] "0" "1" "2" "3" "4"
You can access its elements a number of ways.
a[1] ## access named element by index
# 0
# 3
a[[1]] ## access unnamed element by index
# [1] 3
a["0"] ## access named element by name
# 0
# 3
a[["0"]] ## access unnamed element by name
# [1] 3
as.vector(a) ## as.vector() drops table down to unnamed vector
# [1] 3 10 6 3 2
c(a)[2:4] ## c() drops table down to named vector
# 1 2 3
# 10 6 3
class(a[2:4])
# [1] "array"
class(c(a)[2:4])
# [1] "integer"
It also has an nrow
and dim
attribute, which are set up in the last few lines of table
.
y <- array(tabulate(bin, pd), dims, dimnames = dn)
class(y) <- "table"
Although it's really not clear to me why nrow(a)
is 5 but a[1,]
returns an error.
The table()
command is returning a named vector, not a matrix or data.frame. If you want to access the count of zeros, you'd do
a["0"]
Note that the numeric properties of the levels are lost because the names of named vectors must be characters. You can convert them back with as.numeric(names(a))
if you like
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With