J.M.M
J.M.M

Reputation: 31

R: Creating an index vector

I need some help with R coding here.

The data set Glass consists of 214 rows of data in which each row corresponds to a glass sample. Each row consists of 10 columns. When viewed as a classification problem, column 10 (Type) specifies the class of each observation/instance. The remaining columns are attributes that might beused to infer column 10. Here is an example of the first row

  RI    Na   Mg   Al    Si    K    Ca   Ba   Fe Type

1 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.0 0.0 1

First, I casted column 10 so that it is interpreted by R as a factor instead of an integer value.
Now I need to create a vector with indices for all observations (must have values 1-214). This needs to be done to creating training data for Naive Bayes. I know how to create a vector with 214 values, but not one that has specific indices for observations from a data frame.

If it helps this is being done to set up training data for Naive Bayes, thanks

Upvotes: 1

Views: 12871

Answers (2)

mehakVT
mehakVT

Reputation: 187

Hope this will help

 df$ind <- seq.int(nrow(df))

Upvotes: 0

Dave Rosenman
Dave Rosenman

Reputation: 1467

I'm not totally sure that I get what you're trying to do... So please forgive me if my solution isn't helpful. If your df's name is 'df', just use the dplyr package for reordering your columns and write

library(dplyr)
df['index'] <- 1:214
df <- df %>% select(index,everything()) 

Here's an example. So that I can post full dataframes, my dataframes will only have 10 rows...

Let's say my dataframe is:

df <- data.frame(col1 = c(2.3,6.3,9.2,1.7,5.0,8.5,7.9,3.5,2.2,11.5), 
                col2 = c(1.5,2.8,1.7,3.5,6.0,9.0,12.0,18.0,20.0,25.0))

So it looks like

   col1 col2
1   2.3  1.5
2   6.3  2.8
3   9.2  1.7
4   1.7  3.5
5   5.0  6.0
6   8.5  9.0
7   7.9 12.0
8   3.5 18.0
9   2.2 20.0
10 11.5 25.0

If I want to add another column that just is 1,2,3,4,5,6,7,8,9,10... and I'll call it 'index' ...I could do this:

library(dplyr)
df['index'] <- 1:10
df <- df %>% select(index, everything())

That will give me

  index col1 col2
1    1  2.3  1.5
2    2  6.3  2.8
3    3  9.2  1.7
4    4  1.7  3.5
5    5  5.0  6.0
6    6  8.5  9.0
7    7  7.9 12.0
8    8  3.5 18.0
9    9  2.2 20.0
10  10 11.5 25.0

Upvotes: 0

Related Questions