R Создайте или измените фрейм данных, используя dplyr. - PullRequest
0 голосов
/ 13 сентября 2018

Я очень новый программист, и я учусь использовать dplyr, и мне интересно, как решить эту проблему: у меня есть этот фрейм данных:

 countries <- c("USA","Canada","Denmark","Albania", "Turkey","France", "Italy")
 values <- c(1, 1, 3, 3,7,8,9)
 old_df <- data.frame(countries, values, stringsAsFactors = FALSE)

Я хочу изменить порядок в моемнабор данных для получения этого:

countries <- c("USA , Canada","Denmark , Albania", "Turkey","France", "Italy")
values <- c(1,3,7,8,9)
new_df <- data.frame(countries, values, stringsAsFactors = FALSE)

Поскольку я использую dyplr, я думаю, что лучший способ решить мою проблему мог бы быть:

library(dplyr)  
new_df <- group_by(values) %>% 
                       transmute(countries = countries) %>% 
                ungroup  

Заранее спасибо за любую подсказку о том, какчтобы решить это.

1 Ответ

0 голосов
/ 13 сентября 2018
library(dplyr)

old_df %>%
  group_by(values) %>%
  summarise(countries = paste0(countries, collapse = ", "))

# # A tibble: 5 x 2
# values countries       
#    <dbl> <chr>           
# 1      1 USA, Canada     
# 2      3 Denmark, Albania
# 3      7 Turkey          
# 4      8 France          
# 5      9 Italy  

Суть в том, что для каждого уникального значения в values вы хотите объединить некоторые из ваших строк, поэтому вам нужно использовать summarise (то есть вы хотите получить одну строку на значение values).

Вы можете использовать summarise(countries = paste0(sort(countries), collapse = ", ")), если вы хотите применить алфавитный порядок при объединении стран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...