Установить свертывание для функции вставки в совокупности - PullRequest
1 голос
/ 07 апреля 2020

Я хочу объединить data.frame с двумя столбцами: в одном столбце у меня есть «num», который является идентификатором, а в другом - текст. Важно, чтобы объединенный текст имел пространство между отдельными частями. Мой код такой:

data_aggr <- aggregate(
  x = data_aggr,
  FUN = paste,
  by = list(data_aggr$num)
)

Я пробовал очевидное с FUN = paste(collapse = " ") и

FUN = paste,
collapse = " ",

, но это не работает. Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Aggregate можно использовать для вставки строк с одинаковым значением num следующим образом:

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
0 голосов
/ 07 апреля 2020

Решение dplyr, идея состоит в том, чтобы создать новый столбец с номером строки, чтобы иметь возможность выполнять операцию над каждой строкой.

> 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 
...