首页 > 解决方案 > R使用dplyr创建或修改数据框

问题描述

我是一个非常新的编程,我正在学习如何使用 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  

提前感谢您提供有关如何解决此问题的任何线索。

标签: rdplyr

解决方案


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 = ", "))如果您想在合并国家/地区时应用字母顺序,则可以使用。


推荐阅读