Chcę agregować dane.frame z dwiema kolumnami: w jednej kolumnie mam "Num", który jest numerem identyfikatorem, a drugi mam tekst. Ważne jest, aby zagregowany tekst ma przestrzeń między poszczególnymi częściami. Mój kod to:
data_aggr <- aggregate(
x = data_aggr,
FUN = paste,
by = list(data_aggr$num)
)
Próbowałem oczywistych z FUN = paste(collapse = " ")
i
FUN = paste,
collapse = " ",
Ale to nie działa. Jak muszę to zrobić?
2 odpowiedzi
Agregat może być używany do wklejania wierszy o tej samej wartości Num w następujący sposób:
data_aggr <- data.frame(num=c(1,1,1,2,2), letters=letters[1:5])
aggregate(data_aggr$letters, list(data_aggr$num), FUN=paste, collapse= " ")
# Group.1 x
# 1 1 a b c
# 2 2 d e
Rozwiązanie DPLER, pomysł jest utworzenie nowej kolumny z numerem wiersza, aby móc przeprowadzić operację w każdym wierszu.
> library(dplyr)
> df.ask <- data.frame('Num' = 1:10,
+ 'Text' = letters[1:10])
>
> df.ask %>%
+ mutate(row_num = row_number()) %>%
+ group_by(row_num) %>%
+ mutate(together = paste(Num, Text, collapse = ' ')) %>%
+ ungroup() %>%
+ select(-row_num)
# A tibble: 10 x 3
Num Text together
<int> <fct> <chr>
1 1 a 1 a
2 2 b 2 b
3 3 c 3 c
4 4 d 4 d
5 5 e 5 e
6 6 f 6 f
7 7 g 7 g
8 8 h 8 h
9 9 i 9 i
10 10 j 10 j
Podobne 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.