Dataframe је најчешћи начин чувања података у R-у. Служи за чување табеларних података, али у основи представља листу и садржи векторе једнаких дужина, који не морају бити истог типа.

Наводимо пример dataframe-a од код кога је једна колона нумеричка, а друга текстуална.

df <- data.frame(kolona1 = c(1, 2, 3), kolona2 = c("a", "b", "c"))
df
##   kolona1 kolona2
## 1       1       a
## 2       2       b
## 3       3       c
str(df)
## 'data.frame':    3 obs. of  2 variables:
##  $ kolona1: num  1 2 3
##  $ kolona2: Factor w/ 3 levels "a","b","c": 1 2 3

Видимо да R текстуалне податке претвара у факторе, а да бисмо то избегли додајемо аргумент stringsAsFactors = FALSE.

df <- data.frame(kolona1 = c(1, 2, 3), kolona2 = c("a", "b", "c"), stringsAsFactors = FALSE)
str(df)
## 'data.frame':    3 obs. of  2 variables:
##  $ kolona1: num  1 2 3
##  $ kolona2: chr  "a" "b" "c"

Два dataframe-а, са истим бројем врста се могу надовезати по колонама коришћењем функције cbind().

df1 <- data.frame(kolona1 = c(1, 2, 3), kolona2 = c("a", "b", "c"), stringsAsFactors = FALSE)
df2 <- data.frame(kolona3 = c(4,5,6), kolona4 = c("d", "e", "f"), stringsAsFactors = FALSE)
df3 <- cbind(df1, df2)
df3
##   kolona1 kolona2 kolona3 kolona4
## 1       1       a       4       d
## 2       2       b       5       e
## 3       3       c       6       f

Слично, уколико имају иста имена колона, могу се спојити коришћењем функције rbind().

df1 <- data.frame(kolona1 = c(1, 2, 3), kolona2 = c("a", "b", "c"), stringsAsFactors = FALSE)
df2 <- data.frame(kolona1 = c(4,5,6), kolona2 = c("d", "e", "f"), stringsAsFactors = FALSE)
df4 <- rbind(df1, df2)
df4
##   kolona1 kolona2
## 1       1       a
## 2       2       b
## 3       3       c
## 4       4       d
## 5       5       e
## 6       6       f

Елементима dataframe-а се може приступати помоћу оператора $.

df$kolona1
## [1] 1 2 3

Други приступ елементима је коришћење угластих заграда df[врста, колона], где први аргумент одређује које редове желимо да издвојимо, а други које колоне издвајамо.

На пример, желимо да издвојимо први елемент друге колоне…

df[1,2]
## [1] "a"

… или целу прву врсту…

df[1,]
##   kolona1 kolona2
## 1       1       a

… или целу другу колону…

df[,2]
## [1] "a" "b" "c"

… или прву и трећу врсту, а све колоне.

df[c(1,3), ]
##   kolona1 kolona2
## 1       1       a
## 3       3       c

Можемо да издвојимо све колоне, а оне врсте код којих је вредност у првој колони већа од два.

df4[df4$kolona1 > 2, ]
##   kolona1 kolona2
## 3       3       c
## 4       4       d
## 5       5       e
## 6       6       f

Колонама можемо да приступимо и прослеђивањем њихових назива.

df3[, c("kolona1", "kolona3")]
##   kolona1 kolona3
## 1       1       4
## 2       2       5
## 3       3       6

Уколико желимо да изоставимо неке редове или колоне, испред индекса треба да ставимо знак -.

На пример, ако желимо да буде приказано све сем прве колоне…

df3[, -1]
##   kolona2 kolona3 kolona4
## 1       a       4       d
## 2       b       5       e
## 3       c       6       f

… или све без прве врсте…

df3[-1,]
##   kolona1 kolona2 kolona3 kolona4
## 2       2       b       5       e
## 3       3       c       6       f

или прва и четврта колона, без друге врсте.

df3[-2,c("kolona1", "kolona4")]
##   kolona1 kolona4
## 1       1       d
## 3       3       f