Mam ramkę danych z pierwszą kolumną jako identyfikator kategoryczny, drugą kolumnę jako wartość częstotliwości i pozostałe kolumny jako nieprzetworzone dane. Chcę pomnożyć wszystkie kolumny liczników przez kolumnę częstotliwości, ale nie przez pierwsze dwa.Wybieranie określonych kolumn przy użyciu funkcji mutate_each z dplyr
Wszystkie surowce kolumny count rozpocząć wielką literą, po której następuje kropka, np „L.abd”, T.xyz itp
Na przykład, jeśli mogę użyć kodu:
require(dplyr)
ID <- c(1,2,3,4,5,6)
Freq <- c(0.1,0.2,0.3,0.5,0.1,0.3)
L.abc <- c(1,1,1,3,1,0)
L.ABC <- c(0,3,2,4,1,1)
T.xyz <- c(1,1,1,1,0,1)
F.ABC <- c(4,5,6,5,3,1)
df <- as.data.frame(cbind(ID, Freq, L.abc, L.ABC, T.xyz, F.ABC))
df_new <- df %>% mutate_each(funs(.*Freq), starts_with("L."))
Mogę utworzyć nową ramkę danych zawierającą kolumny danych kategorycznych wraz z kolumnami zaczynającymi się od "L." które zostały pomnożone przez odpowiednią wartość częstotliwości.
Czy istnieje sposób na zmianę komendy "starts_with" w celu wybrania wszystkich kolumn rozpoczynających się od dużej litery i kropki? Moje próby datowania przy użyciu modyfikacji, takich jak "[A-Z]." nie udało się.
góry dzięki
Możesz też użyć 'mecze ("^ [AZ] \\." Ignore.case = FAŁSZ)' ponieważ domyślnie jest PRAWDA, a OP chce matować wielkie litery. Porównaj na przykład 'wybierz (iris, mecze ("^[az]. * "))' I 'wybierz (iris, mecze ("^[az]. * ", Ignore.case = FALSE))' –
@docendodiscimus Dzięki , nie sprawdził domyślnego przypadku. – akrun