R使用dplyr创建或修改数据框

时间:2018-09-13 12:34:21

标签: 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  

预先感谢您提供有关解决方法的任何线索。

1 个答案:

答案 0 :(得分:2)

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(即,您要在每个{{ 1}}值。

如果您要在合并国家/地区时应用字母顺序,则可以使用values