0 votes
1 view
in R Programming by (5k points)

I have the following data frame in R:

> str(df)

'data.frame':   545227 obs. of  15 variables:

 $ ykod : int  93 93 93 93 93 93 93 93 93 93 ...

 $ yad  : Factor w/ 42 levels "BAKUGAN","BARBIE",..: 30 30 30 30 30 30 30 30 30 30 ...

 $ per  : Factor w/ 3 levels "2 AYLIK","3 AYLIK",..: 3 3 3 3 3 3 3 3 3 3 ...

 $ donem: int  201101 201101 201101 201101 201101 201101 201101 201101 201101 201101 ...

 $ sayi : int  201101 201101 201101 201101 201101 201101 201101 201101 201101 201101 ...

 $ mkod : int  4 5 9 11 12 18 20 22 25 26 ...

 $ mad  : Factor w/ 10464 levels "   Defne Market          ",..: 405 8075 9710 10145 9297 7973 2542 3892 2759 5769 ...

 $ mtip : Factor w/ 29 levels "Abone Bürosu                                      ",..: 2 20 20 2 2 2 2 2 2 2 ...

 $ kanal: Factor w/ 2 levels "OB","SS": 2 2 2 2 2 2 2 2 2 2 ...

 $ bkod : int  110565 110565 110565 110565 110565 110565 110565 110565 110565 110565 ...

 $ bad  : Factor w/ 212 levels "4. Levent","500 Evler",..: 167 167 167 167 167 167 167 167 167 167 ...

 $ bolge: Factor w/ 12 levels "Adana Şehiriçi",..: 7 7 7 7 7 7 7 7 7 7 ...

 $ sevk : int  2 3 3 3 2 2 2 6 2 2 ...

 $ iade : int  2 1 0 2 0 2 1 0 0 2 ...

 $ satis: int  0 2 3 1 2 0 1 6 2 0 ...

I want to list unique (like SQL's DISTINCT) values for selected multiple variables. For example, unique(yad) gives me the names of each 42 elements, but I need to extract two columns (yad and per together, with all unique combinations):

yad           per

---           ---

BARBIE        AYLIK

BAKUGAN       2 AYLIK

MICKEY MOUSE  2 AYLIK

TINKERBELL    3 AYLIK

...           ...

How can I achieve this?

1 Answer

0 votes
by (23.6k points)

To extract unique values from more than one column, you can use the unique() function in the following way:

 df <- data.frame(yad = c("BARBIE", "BARBIE", "BAKUGAN", "BAKUGAN"),

                  per = c("AYLIK",  "AYLIK",  "2 AYLIK", "2 AYLIK")

                  )

 df

      yad     per

1  BARBIE   AYLIK

2  BARBIE   AYLIK

3 BAKUGAN 2 AYLIK

4 BAKUGAN 2 AYLIK

unique(df[c("yad", "per")])

      yad     per

1  BARBIE   AYLIK

3 BAKUGAN 2 AYLIK

...