Mam dataframe z 3 kolumnami, z których wszystkie są znakami. Chcę użyć tego dataframe, aby utworzyć formuły, więc muszę upewnić się, że rama danych jest sformatowana, więc mogę wkleić je w równaniach.
Pierwsza kolumna zawiera funkcje statystyczne (np. log10, exp). Druga zawiera zmienną objaśniającą. Trzecia kolumna zawiera informacje o typie modelu i należy jej użyć do określenia, czy należy zastosować następującą funkcję.
Chcę edytować drugą kolumnę, dzięki czemu umieszcza litery z pierwszej kolumny z przodu ciągu. Ale chciałbym tekście w drugiej kolumnie nawiasów. I chciałbym zastosować tę funkcję w niektórych modelach w kolumnie 3RD, które zawierają określone słowo. Więc jakieś przykładowe dane:
Function <- c("exp","log10","exp")
Variable <- c("x","y","z")
Model_type <- c("Model_Yes","Model_Yes","Model_No")
Test <- data.frame(Function,Variable,Model_type)
Test[, ] <- lapply(Test[, ], as.character)
Myślałem na podstawie podobnych pytań, takich jak Jak używać chained ifelse i grepl? że potrzebuję czegoś takiego:
Test$Variable <- ifelse((grepl("No", Test$Model_type)),
Test$Variable,
paste(Test$Function,Test$Variable))
Ale to nie działa dla "No" model_types, a także nie umieszczaj wsporników wokół oryginalnego łańcucha zmiennego. Oto, co chciałbym być.
Test$Variable <- c("exp(x)","log10(y)","z")
Z góry dziękuję za wszelką pomoc.
1 odpowiedź
Możesz wkleić zmienne razem, używając paste0
i dodając nawiasy opóźniające i wiodące
paste0(Test$Function, "(", Test$Variable, ")")
#[1] "exp(x)" "log10(y)" "exp(z)"
Więc ostatnie polecenie byłoby
Test$Variable <- with(Test, ifelse(grepl("No", Model_type),
as.character(Variable), paste0(Function, "(", Variable, ")")))
Test
# Function Variable Model_type
#1 exp exp(x) Model_Yes
#2 log10 log10(y) Model_Yes
#3 exp z Model_No
Podobne pytania
Powiązane pytania
Nowe pytania
r
R to darmowy język programowania typu open source i środowisko oprogramowania do obliczeń statystycznych, bioinformatyki, wizualizacji i obliczeń ogólnych. Proszę podać minimalne i powtarzalne przykłady wraz z pożądanymi wynikami. Użyj dput () dla danych i określ wszystkie pakiety inne niż podstawowe za pomocą wywołań biblioteki (). Nie osadzaj obrazów dla danych lub kodu, zamiast tego użyj wciętych bloków kodu. W przypadku pytań związanych ze statystykami należy skorzystać z https://stats.stackexchange.com.