0% encontró este documento útil (0 votos)
125 vistas14 páginas

DataFrame R

Este documento describe los data frames en R. Un data frame es un objeto que permite almacenar datos bidimensionales, con filas y columnas. Puede crearse de diferentes formas, como leyendo un archivo de datos o usando la función data.frame(). Los elementos de un data frame se pueden extraer como una matriz o lista. Las funciones como subset(), transform() y order() permiten seleccionar, transformar y ordenar los datos en un data frame.

Cargado por

ejarkm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas14 páginas

DataFrame R

Este documento describe los data frames en R. Un data frame es un objeto que permite almacenar datos bidimensionales, con filas y columnas. Puede crearse de diferentes formas, como leyendo un archivo de datos o usando la función data.frame(). Los elementos de un data frame se pueden extraer como una matriz o lista. Las funciones como subset(), transform() y order() permiten seleccionar, transformar y ordenar los datos en un data frame.

Cargado por

ejarkm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

Las Tablas de Datos

Los data frame


Un data frame es un objeto de R que permite almacenar datos bidimensionales.
Tienen en comn con las matrices que son objetos rectangulares donde todas las
columnas deben tener la misma longitud, pero a diferencias de ellas cada columna
puede ser de tipo numrico, carcter o lgico. De igual forma, pueden verse como
una lista donde todas sus elementos deben tener la misma longitud.
Se puede ver como un archivo de datos rectangular donde las filas son los casos y
las columnas son las variables que se mide en cada caso. Un data frame es
equivalente a un fichero de datos de SPSS o de SAS. Sin embargo, un data frame no
es un fichero sino un objeto.
Un data frame como un dataset de SPSS o de SAS es un fichero rectangular con
forma de matriz donde la primera columna puede contener los nombres de los
individuos y la primera fila los nombres de las variables.
Las columnas (variables) no numricas, en un data frame, son consideradas como
factores, con tantos niveles como valores distintos haya (en los datos, salvo que se
indique otra cantidad).

1. Crear un data frame


Un data frame puede crearse de diferentes formas, entre ellas se destacan:

Por medio de la funcin data.frame().


Leyendo un archivo de datos con read.table().
Con la funcin data.matrix().

Las dos formas ms comunes de obtener un data frame es por medio de la funcin
data.frame() y al leer un archivo de texto con la funcin read.table().
En el ejemplo siguiente se crea una tabla de datos a partir de vectores y factores
previamente definidos.
Ejemplo 1
# Se crea el vector edad por medio de la funcin c().
EDAD<-c(12,15,17,10,45)
# Se crea el vector CASO por medio de la funcin seq()
CASO<- seq(1,5)
# Se crea el factor SEXO por medio de la funcin rep().
SEXO<-rep(x=c("M","H"),times=c(2,3))
# Creamos el data frame por medio de la funcin data.frame().

1|Pgina

df<-data.frame(edad=EDAD,caso=CASO,sexo=SEXO)
df
##
##
##
##
##
##

1
2
3
4
5

edad caso sexo


12
1
M
15
2
M
17
3
H
10
4
H
45
5
H

Ejemplo 2
resultados <- data.frame(
talla = c(185,172,165,177,168),
peso = c( 82, 70, 76, 52, 72),
QI
= c(110,120, 92,120,142),
sexo = c("H","M","M", "M","H"),
row.names= c("Pablo", "Marta","Lola","Genoveva
", "Luis"))
resultados
##
##
##
##
##
##

Pablo
Marta
Lola
Genoveva
Luis

talla peso QI sexo


185
82 110
H
172
70 120
M
165
76 92
M
177
52 120
M
168
72 142
H

Acceder a los elementos de una tabla de datos.


Los data frame comparten caractersticas con las matrices y con las listas. Para
extraer elementos de las tablas de datos se pueden referenciar sus elementos como
si fuese una matriz y como una lista.
Como matriz bidimensional
Los elementos se pueden extraer utilizando las referencias de una matriz
bidimensional.
resultados[2,3]
## [1] 120
resultados[4,]
##
talla peso QI sexo
## Genoveva
177
52 120
M
resultados[4, c(2,4)]
##
peso sexo
## Genoveva
52
M

Como lista
Para trabajar con las variables (columnas) de un data.frame se puede utilizar la
notacin estndar de las listas,
2|Pgina

nombre_data_frame$nombre_columna
nombre_data_frame[[ ]]

Las dos formas son equivalentes en el sentido que muestran la misma informacin.
Sin embargo, no se obtiene el mismo objeto.
Ejemplo 3
df[3]
##
##
##
##
##
##

1
2
3
4
5

sexo
M
M
H
H
H

dim(df[3])
## [1] 5 1
dim(df$sexo)
## NULL

A veces, puede ser ms interesante emplear simplemente el nombre de la columna.

Las funciones attach() y detach()


La accin de vincular los nombres de las columnas con sus nombres como vectores
se realiza por medio de la funcin attach(). En este ejemplo, para mostrar los
nombres del data frame se ejecuta la sentencia attach(fd).
Ejemplo 4
attach(df)
names(df)
## [1] "edad" "caso" "sexo"
edad+caso
## [1] 13 17 20 14 50
(edad - mean(edad))/sd(edad)
## [1] -0.5438479 -0.3346756 -0.1952275 -0.6832961

1.7570471

detach(df)

IMPORTANTE Una vez vinculado un data frame por medio de la funcin attach()
las modificaciones hechas a las columnas por medio de las referencia de sus
nombres no afectan al data frame original. A efectos prcticos, al ejecutar
attach(df), R realiza una copia del data frame 'df' y es en esta copia donde se
trabaja.
Por ejemplo, si se ejecuta
3|Pgina

attach(df)
edad <- 2*edad
edad
## [1] 24 30 34 20 90
detach(df)
df$edad
## [1] 12 15 17 10 45

Se puede apreciar que el data frame 'df' no ha sido modificado.


Para deshacer la vinculacin se ejecuta la funcin detach(). En general se debe
evitar el uso de la funcin attach().

Seleccionar casos, variables y transformar variables en un


data.frame
Hay dos formas de seleccionar casos y variables en un data frame. La primera es
utilizar las tcnicas usuales de matrices, la seleccin por ndices. La segunda es
utilizar las funciones; subset() y transform(). Aunque el uso de las funciones
resulta ms cmodo la seleccin por medio de ndices es ms poderosa.
La funcin subset
Permite seleccionar casos (filas). Su sintaxis es:
subset( data.frame, condicin lgica, select=vector con nombres de
variables)

Ejemplo 5
df.2 <- subset(df,edad>14,select=c(edad,sexo))
df.2
##
edad sexo
## 2
15
M
## 3
17
H
## 5
45
H

La funcin transform
Para transformar unas determinadas columnas, o crear nuevas variables, se puede
utilizar la funcin transform(). Su sintaxis es,
transform(data.frame,variable1=f(varibles),variable3=f(varibles)...)

Ejemplo 6
En este ejemplo se transforma la variable edad y el resultado se almacena en un
nuevo data.frame llamado, 'fd.3'.
df.3 <- transform(df,edad=edad*2)
df.3

4|Pgina

##
##
##
##
##
##

1
2
3
4
5

edad caso sexo


24
1
M
30
2
M
34
3
H
20
4
H
90
5
H

Para realizar la misma operacin sin la funcin transform() bastara con escribir
df$edad <-

df$edad*2

Aadir una nueva variable.


Con transform().
df.3 <- transform(df, edad2 = edad+23)
df.3
##
##
##
##
##
##

1
2
3
4
5

edad caso sexo edad2


12
1
M
35
15
2
M
38
17
3
H
40
10
4
H
33
45
5
H
68

Sin transform().
1.

Construimos la variable: edad.n <- df$edad + 23

2.

Aadimos la variable por medio del operador de asignacin, "<-"

3.

df$edad.nueva <- edad.n

df
##
##
##
##
##
##

1
2
3
4
5

edad caso sexo


12
1
M
15
2
M
17
3
H
10
4
H
45
5
H

Las funciones with() y within()


Otras opciones para transformar variables son utilizar las funciones with() y
within() que permiten realizar transformaciones en un data frame. Veamos los
siguientes ejemplos.
Ejemplo 7
N <- 3
df <- data.frame(x1=rnorm(N),x2=runif(N))
df$y <- with(df,{x1+x2})
df
##
x1
x2
y
## 1 -0.7984101 0.7288038 -0.06960623

5|Pgina

## 2 -2.0586854 0.2446760 -1.81400935


## 3 1.2936937 0.5597657 1.85345941
df <- within(df,{
x1.sq <- x1^2
x2.sq <- x2^2
y <- x1.sq+x2.sq
x1 <- x2 <- NULL
})
df
##
y
x2.sq
x1.sq
## 1 1.168614 0.53115501 0.6374586
## 2 4.298052 0.05986637 4.2381856
## 3 1.986981 0.31333767 1.6736433

Eliminar una variable de un data frame


Una variable de un data.frame se puede eliminar directamente referenciandola por
el nmero de columna con signo negativo, df [, -n] elimina la columna
Ejemplo 8
misdatos <- data.frame(x=1:10, y=rnorm(10))
misdatos
##
##
##
##
##
##
##
##
##
##
##

x
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10 10

y
0.5643674
-2.0934608
-1.0279501
1.9950154
-1.7604075
1.0423324
1.1142123
-0.7987946
-0.9349291
-0.4061025

Para eliminar la variable "x" :


misdatos[, -1]
## [1]
324
## [7]

0.5643674 -2.0934608 -1.0279501

1.9950154 -1.7604075

1.0423

1.1142123 -0.7987946 -0.9349291 -0.4061025

Por medio de la funcin NULL.


misdatos <- data.frame(x=1:10, y=rnorm(10))
misdatos
##
##
##
##
##
##

1
2
3
4
5

x
1
2
3
4
5

y
-1.08765510
-1.26294471
-1.67139155
-0.70881465
0.44262326

6|Pgina

##
##
##
##
##

6
6 -1.55626520
7
7 1.06087149
8
8 0.04690693
9
9 -0.43802659
10 10 -0.07292457

misdatos[, -1]
##
##

[1] -1.08765510 -1.26294471 -1.67139155 -0.70881465 0.44262326


[6] -1.55626520 1.06087149 0.04690693 -0.43802659 -0.07292457

misdatos
##
##
##
##
##
##
##
##
##
##
##

x
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10 10

y
-1.08765510
-1.26294471
-1.67139155
-0.70881465
0.44262326
-1.55626520
1.06087149
0.04690693
-0.43802659
-0.07292457

misdatos[,1] <- NULL


misdatos
##
##
##
##
##
##
##
##
##
##
##

1
2
3
4
5
6
7
8
9
10

y
-1.08765510
-1.26294471
-1.67139155
-0.70881465
0.44262326
-1.55626520
1.06087149
0.04690693
-0.43802659
-0.07292457

Los efectos de los dos mtodos no son exactamente iguales. Estudia las diferencias.

Ordenar un data frame


Para ordenar un data frame se disponen de diferentes opciones. La principal es
ordenar los ndices de las filas en funcin de una o ms columnas por medio de la
funcin order().
La funcin order() devuelve un vector de ndices permutados, de tal forma que
sus argumentos quedan ordenados de forma ascendente. Si hay ms de un
vector,en caso de empate en el primer vector se utilizan los valores del segundo. Si
persiste el empate se mirara el tercero, y as sucesivamente.
sort.list tiene la misma funcin pero utilizando nicamente un argumento.

Sintaxis
7|Pgina

order(..., na.last = TRUE, decreasing = FALSE)


sort.list(x, partial = NULL, na.last = TRUE, decreasing = FALSE,
method = c("shell", "quick", "radix"))

Argumentos
...
Una secuencia de vectores numricos, complejos, de caracter o
lgicos todos de igual longitud o un objeto de clase R.x Un vector.
partial
Vector de ndices para una ordenacin parcial. (Los valores nulos no
se utilizan)
decreasing
Logica. Determina si el orden es creciente o decreciente.
na.last
Controla el tratamiento de los NAs. Si es TRUE, los valores missing
se colocan al final de los datos, si es FALSE, se colocan al principio de
los datos, si NA, se eliminan de los da-tos.
method
El mtodo que se empleara. Los emparejamientos parciales est?n
permitidos.
Detalles
En el caso de empates en el primer vector, se utilizarn los valores del segundo
vector para deshacer los empates. Si permanece el empate, los valores de los
siguientes argumentos se utilizaran para romper el empate. El tipo de ordenacin
(sort) empleado es "stable" salvo para el mtodo "quick" ( method = "quick"), si
quedar? algun empate sin resolver se dejaran en el su orden original.
Los nmeros complejos se ordenan primero segn su parte real y luego por la
parte imaginaria. El orden de los vectores car?cter depender? de la secuencia local:
ver comparison.
El mtodo por defecto para sort.list es un compromiso. El mtodo "quick" se utiliza
nicamente para valores numricos con la opcin na.last=NA, y no es estable, sin
embargo es el ms rpido en vectores grandes. El metodo "radix" esta nicamente
implementado para valores enteros menores de 100.000. En esta situacin, es
(muy) y estable. Es el mtodo de eleccin para ordenar factores.
El mtodo partial se mantiene para permitir la compatibilidad de otras
implementaciones de S, pero no permite otros valores y la ordenacin ser
siempre completa.
Ejemplos
# La funcin order() da como resultado los ndices de ordenacin.
# La funcin sort() da como resultado el objeto ordenado
# Vector caracter
c1 <- c("A","B","C","D")
sort(c1,decreasing = TRUE)
## [1] "D" "C" "B" "A"
order(c1)

8|Pgina

## [1] 1 2 3 4
c2 <- c("A","D","C","B")
sort(c2,decreasing = TRUE)
## [1] "D" "C" "B" "A"
order(c2)
## [1] 1 4 3 2
# Vector numrico
x <- c(2,1:9)
x_sort <- sort(x)
x
##

[1] 2 1 2 3 4 5 6 7 8 9

(indice <- order(x))


##

[1]

9 10

x[indice]
##

[1] 1 2 2 3 4 5 6 7 8 9

x_sort
##

[1] 1 2 2 3 4 5 6 7 8 9

# Ordenar un data.frame
df1 <- data.frame(
pais = c("M","G","J","L","Z","B"),
pob = c(234, 456, 267,987,123,369),
area = c(1,2,3,2,3,1))
df2 <- df1[order(df1$pais),]
df3 <- df1[order(df1$pob),]
df4 <- df1[order(df1$area),]
# funcin xtfrm() es una funcin auxiliar que produce un vector numri
co que puede ser ordenado en el mismo orden que 'x'.
df5 <- df1[order(-df1$area, -xtfrm(df1$pais)),]
df5
##
##
##
##
##
##
##

5
3
4
2
1
6

pais
Z
J
L
G
M
B

pob area
123
3
267
3
987
2
456
2
234
1
369
1

9|Pgina

# Quiero ordenar un dataframe por varias columnas en R


# Por ejemplo, con los datos de fotograma a continuaci?n me gustar?a o
rdenar por
# la columna z (descendente), a continuaci?n, por la columna b (as-ce
ndente):
dd <- data.frame(b = factor(c("Hi", "Med", "Hi", "Low"),
levels = c("Low", "Med", "Hi"), ordered = TRUE),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c(1, 1, 1, 2))
dd
##
##
##
##
##

b x y
1 Hi A 8
2 Med D 3
3 Hi A 9
4 Low C 9

z
1
1
1
2

dd[with(dd, order(b,-z)), ]
##
##
##
##
##

b x y z
4 Low C 9 2
2 Med D 3 1
1 Hi A 8 1
3 Hi A 9 1

funcin merge(): Combinar dos data frame


La funcin merge() combina dos data frame columna a columna o por los nombres
de filas.
Sintaxis
merge(x, y, ..)
merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y
= by, all = FALSE, all.x = all, all.y = all,
sort = TRUE,
suffixes = c(".x",".y"), incomparables = NULL, ...)

Argumentos
x, y
by, by.x, by.y
all
all.x

all.y
sort

data frames, u objetos que se van a combinar en un objeto


especificaci?n de las columnas comunes.
logica; all = L es una abreviatura de all.x = L y all.y = L.
logica; si TRUE, se aade una fila extra a la salida, una fila por
cada fila en x que no tiene correspondencia con una fila en y. Estas
filas tendr?n NAs en aquellas columnas que sean rellenado con
campos de y. El valor por defecto es FALSE, en este caso
?nicamente las filas con datos en los dos data frame se incluirn
en la salida.
logica; analogoa a all.x logica. El resultado se ordenar en funcin de las columnas
10 | P g i n a

especificadas en by .
suffixes
caracter(2) especifica los sufijos que se utilizaran para crear
nombres cuando los nombres especificados en by names() no
sean ?nicos.
incomparables Valores que no pueden ser emparejados. Ver match.
...
Argumentos que son pasados a o de mtodos.
Detalles
Por defecto los data frames se combinan en funcin de las columnas que en los dos
data frame tienen nombres comunes, pero se puede especificar las columnas que
se quiere utilizar por medio de by.x y by.y, lo que permite realizar la uni?n sin que
en los dos data frame se utilizan los mismos nombres de columna.
Las columnas pueden especificarse por nombre, n?mero o por medio de un vector
lgico, llamado row.names .El n?mero 0 especifica la fila de nombres. Las filas en
los dos data frame que van a emparejarse son extra?das y juntadas. Si hay m?s de
un posible emparejamiento, se realizan tantos emparejamientos como sea posible
y cada uno de ellos genera una nueva fila. El significado preciso de 'match', se
puede ver en match.
Si by o by.x y by.y tiene longitud 0 (un vector de longitud cero o NULL), el
resultado, r, es el producto cartesiano de x e y, es decir, dim(r) =
c(nrow(x)*nrow(y), ncol(x) + ncol(y)).
Si all.x es TRUE, todos los casos no emparejados de x se a?aden al resultado,
a?adiendo NA en las columnas correspondientes de y; de igual forma para all.y.
Si le resto de columnas en los data frames tuviesen nombres iguales se les a?adir?a
como sufijo (".x" and ".y" por defecto) para conseguir que no haya repetici?n de
nombres.
Valor
Un data frame. Las filas se ordenan por defecto segn el orden lexicogrfico entre
las columnas comunes, pero si la opcin sort = FALSE se ordenaran en un orden
no especificado. Primero las columnas que son comunes, seguidas de las columnas
de x e y. Si en el emparejamiento se han especificado los nombres de las filas, se
a?ade una columna extra (car?cter) a la izquierda que se llama row.names.
Ejemplos
## use character columns of names to get sensible sort order
authors <- data.frame(
surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil"))
,
nationality = c("US", "Australia", "US", "UK", "Australia"),
deceased = c("yes", rep("no", 4)))

El data frame 'authors' consta de 4 columnas (variables): surname (apellido),


nationality (nacionalidad) y deceased (fallecimiento)
authors

11 | P g i n a

##
##
##
##
##
##

surname nationality deceased


1
Tukey
US
yes
2 Venables
Australia
no
3 Tierney
US
no
4
Ripley
UK
no
5
McNeil
Australia
no

books <- data.frame(


name = I(c("Tukey", "Venables", "Tierney",
"Ripley", "Ripley", "McNeil", "R Core")),
title = c("Exploratory Data Analysis",
"Modern Applied Statistics ...",
"LISP-STAT",
"Spatial Statistics", "Stochastic Simulation",
"Interactive Data Analysis",
"An Introduction to R"),
other.author = c(NA, "Ripley", NA, NA, NA, NA,
"Venables & Smith"))

El data frame 'books' consta de 3 columnas (variables): name (nombre), title


(t?tulo) y other.authors (otros autores)
books
##
##
##
##
##
##
##
##

name
title
other.author
1
Tukey
Exploratory Data Analysis
<NA>
2 Venables Modern Applied Statistics ...
Ripley
3 Tierney
LISP-STAT
<NA>
4
Ripley
Spatial Statistics
<NA>
5
Ripley
Stochastic Simulation
<NA>
6
McNeil
Interactive Data Analysis
<NA>
7
R Core
An Introduction to R Venables & Smith

Lo data frame 'authors' y 'books' tiene en comn la informacin del apellido del
autor de la obra. Sin embargo, en 'authors' esta variable se llama 'surname' y en
'book' 'name'.
Para unir estos dos data frame utilizaremos como campo clave esta variable. Por
medio de > by.x ??? se especifica el nombre de la variable en el primer data frame
(authors) > by.y ??? se especifica el nombre de la variable en el segundo data frame
(books)
(m1 <- merge(authors, books, by.x = "surname", by.y = "name"))
##
surname nationality deceased
.author
## 1
McNeil
Australia
no
<NA>
## 2
Ripley
UK
no
<NA>
## 3
Ripley
UK
no
<NA>
## 4 Tierney
US
no
<NA>
## 5
Tukey
US
yes

title other
Interactive Data Analysis
Spatial Statistics
Stochastic Simulation
LISP-STAT
Exploratory Data Analysis

12 | P g i n a

<NA>
## 6 Venables
Ripley

Australia

no Modern Applied Statistics ...

Primero aparecen las columnas (variables) del data frame 'authors' seguidos de las
columnas del data frame 'books' indexados por la variable apellidos y en este caso
se mantiene el nombre de 'authors' (del primer data frame) para la columna
com?n.
(m2 <- merge(books, authors, by.x = "name", by.y = "surname"))
##
name
title other.author nationality d
eceased
## 1
McNeil
Interactive Data Analysis
<NA>
Australia
no
## 2
Ripley
Spatial Statistics
<NA>
UK
no
## 3
Ripley
Stochastic Simulation
<NA>
UK
no
## 4 Tierney
LISP-STAT
<NA>
US
no
## 5
Tukey
Exploratory Data Analysis
<NA>
US
yes
## 6 Venables Modern Applied Statistics ...
Ripley
Australia
no

Primero aparecen las columnas (variables) del data frame 'books' seguidos de los
del data frame 'authors' indexados por la variable apellidos y en este caso se
mantiene el nombre de 'books' para la columna com?n.
EERRROR
stopifnot(as.character(m1[,1]) == as.character(m2[,1]),
all.equal(m1[, -1], m2[, -1][ names(m1)[-1] ]),
dim(merge(m1, m2, by = integer(0))) == c(36, 10))
## "R core" is missing from authors and appears only here :
merge(authors, books, by.x = "surname", by.y = "name", all = TRUE)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

surname nationality deceased


title
1
McNeil
Australia
no
Interactive Data Analysis
2
R Core
<NA>
<NA>
An Introduction to R
3
Ripley
UK
no
Spatial Statistics
4
Ripley
UK
no
Stochastic Simulation
5 Tierney
US
no
LISP-STAT
6
Tukey
US
yes
Exploratory Data Analysis
7 Venables
Australia
no Modern Applied Statistics ...
other.author
1
<NA>
2 Venables & Smith
3
<NA>
4
<NA>
5
<NA>
6
<NA>
7
Ripley

13 | P g i n a

## example of using 'incomparables'


x <- data.frame(k1=c(NA,NA,3,4,5), k2=c(1,NA,NA,4,5), data=1:5)
y <- data.frame(k1=c(NA,2,NA,4,5), k2=c(NA,NA,3,4,5), data=1:5)
merge(x, y, by=c("k1","k2")) # NA's match
##
k1 k2 data.x data.y
## 1 4 4
4
4
## 2 5 5
5
5
## 3 NA NA
2
1
merge(x, y, by=c("k1"), incomparables=NA)
##
k1 k2.x data.x k2.y data.y
## 1 4
4
4
4
4
## 2 5
5
5
5
5
merge(x, y, by="k1") # NA's match, so 6 rows
##
##
##
##
##
##
##

1
2
3
4
5
6

k1 k2.x data.x k2.y data.y


4
4
4
4
4
5
5
5
5
5
NA
1
1
NA
1
NA
1
1
3
3
NA
NA
2
NA
1
NA
NA
2
3
3

merge(x, y, by="k2", incomparables=NA) # 2 rows


##
k2 k1.x data.x k1.y data.y
## 1 4
4
4
4
4
## 2 5
5
5
5
5

14 | P g i n a

También podría gustarte