Question

I have a table of several columns, with values from 1 to 8. The columns have different lenghts so I have filled them with NAs at the end. I would like to transform each column of the data so I will get something like this for each column:

        1  2  3  4  5  6  7  8
0-25    1  0  0  0  0  1  0  2
25-50   5  1  2  0  0  0  0  1
50-75   12 2  2  3  0  1  1  1
75-100  3  25 1  1  1  0  0  0

where the row names are percentages of the actual length of the original column (i.e. without the NAs), the column names are the original 0 to 8 values, and the new values are the number of occurances of the original values in each percentage. Any ideas will be appreciated.

Best,

Lince

PS/ I realize that my original message was very confusing. The data I want to transform contain a number of columns from time series like this:

1
1
8
1
3
4
1
5
1
6
2
7
1
NA
NA

and I need to calculate the frequency of occurences of each value (1 to 8) at the 0-25%, 25-50% et cetera of the series. Joris' answer is very useful. I can work on it. Thanks!

Was it helpful?

Solution

Given the lack of some information, I can offer you this :

Say 0 is no occurence, and 1 is occurence. Then you can use the following little script for the results of one column. Wrap it in a function, apply it over the columns and you get what you need.

x <- c(1,0,0,1,1,0,1,0,0,0,1,0,1,1,1,NA,NA,NA,NA,NA,NA)

prop <- which(x==1) / sum(!is.na(x))*100
result <- cut(prop,breaks=c(0,25,50,75,100))
table(result)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top