/ / Dodawanie tekstu do kolumny na podstawie nazwy wiersza w R - r

Dodanie tekstu do kolumny na podstawie nazwy wiersza w R - r

Jestem nowym użytkownikiem R. Napisałem if funkcja, która daje mi wiersze moich danych, które mają długości poza ustalonym zakresem długości. Wynik jest przedstawiony w następujący sposób:

1690 Field mouse 100

(rowname, gatunek, długość)

Mam kolumnę jakości (df$Quality), że chciałbym dodać uwagi dla wszystkich spoza zakresu. Czy jest możliwe napisanie kodu, który jest oparty na nazwie wiersza, np. W tym wierszu w df$Quality kolumna dodaj ten tekst "Query: size above range".

Odpowiedzi:

0 dla odpowiedzi № 1

Może ten przykład może pomóc:

> df <- data.frame(Rowname=1:6, Species=letters[1:6],length=rep(c(99,101),times=3))
> df
Rowname Species length
1       1       a     99
2       2       b    101
3       3       c     99
4       4       d    101
5       5       e     99
6       6       f    101
> df[df$length > 100,"Quality"] <- "Query: size above range"
> df
Rowname Species length                 Quality
1       1       a     99                    <NA>
2       2       b    101 Query: size above range
3       3       c     99                    <NA>
4       4       d    101 Query: size above range
5       5       e     99                    <NA>
6       6       f    101 Query: size above range

Jako alternatywny punkt wyjścia można również użyć nazwy wiersza (df), aby wykonać podobne przetwarzanie.


1 dla odpowiedzi nr 2

Innym rozwiązaniem, szczególnie jeśli masz duży zestaw danych, jest użycie dplyr pacakge:

library(dplyr)
mtcars %>%
mutate(Quality=ifelse(mpg>20, "Query: size above range", "Query: size below range"))

mpg cyl  disp  hp drat    wt  qsec vs am gear carb                 Quality
1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4 Query: size above range
2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4 Query: size above range
3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1 Query: size above range
4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1 Query: size above range
5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2 Query: size below range
...