W R mam ramkę danych zawierającą etykietę klasy C (współczynnik) i dwa pomiary, M1 i M2 . Jak obliczyć korelację między M1 i M2 w każdej klasie?
Idealnie byłoby odzyskać ramkę danych z jednym wierszem dla każdej klasy i dwiema kolumnami: etykietą klasy C i korelacją.
r
correlation
NPE
źródło
źródło
plyr
paczka, prawda? :)Jeśli masz skłonność do korzystania z funkcji w pakiecie podstawowym, możesz użyć
by
funkcji, a następnie ponownie złożyć dane:źródło
by
, ale nie mogłem wymyślić, jak przekształcić wynik w ramkę danych.Kolejny przykład z wykorzystaniem pakietów podstawowych i przykładowych danych Tala:
źródło
plyr
robi, ale daje lepszą kontrolę, choć nie jest tak czysty. Moja opinia zmieniłaby się, gdyby jedno rozwiązanie miało lepszy profil czas / pamięć. Nie porównałem ich jednak.Korzystanie z data.table jest krótsze niż dplyr
źródło
Oto podobna metoda, która da również tabelę z wartościami n i p dla każdej korelacji (dla wygody zaokrąglona do 3 miejsc po przecinku):
źródło
Oto bardziej nowoczesne rozwiązanie, wykorzystujące
dplyr
pakiet (który jeszcze nie istniał, gdy zadano pytanie):Skonstruuj dane wejściowe:
Oblicz korelacje:
Wyjście:
źródło