Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access values in a frequency table

Tags:

r

r-table

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
like image 784
Minh Nguyen Avatar asked Nov 27 '14 02:11

Minh Nguyen


People also ask

How do you find frequency values?

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.

What is the value in a frequency table?

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.

How do you access table values in R?

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].


2 Answers

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.

like image 88
Rich Scriven Avatar answered Oct 24 '22 12:10

Rich Scriven


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

like image 41
MrFlick Avatar answered Oct 24 '22 14:10

MrFlick