подмножество кадра данных путем сравнения столбцов - PullRequest
0 голосов
/ 13 июня 2018

Я хотел бы использовать R для объединения некоторых файлов на основе значений некоторых параметров.Я использую следующий CSV-файл

ls table.csv  
filename,type,rep,category,param
file1,1,4,A,1
file2,3,1,B,1
file3,2,1,A,2
file4,1,1,C,3
file5,1,1,C,2
file6,2,2,D,1
file7,3,1,C,2
file8,3,1,B,3
file9,3,1,B,3
file10,1,4,A,1
file11,1,1,B,1

ta <- readr::read_csv("table.csv")
Parsed with column specification:
cols(
filename = col_character(),
type = col_integer(),
rep = col_integer(),
category = col_character(),
param = col_integer()
)

Я хотел бы объединить файлы с одинаковыми значениями для ta $ type, ta $ rep и ta $ category (ta $ param не имеет значения).

Итак, я бы объединил: file1, file10 [1,4, A] file2, file8, file9 [3,1, B] file4, file5 [1,1, C] file3 [2,1, A], file6[2,2, D], file7 [3,1, C] и file11 [1,1, B] не будут объединены с другими файлами.

У кого-нибудь есть идеи, как это сделать?Спасибо!

1 Ответ

0 голосов
/ 14 июня 2018

Можно использовать dplyr::group_by для столбцов (type, rep, category), а затем summarise, используя paste0 с аргументом collapse="+".Решение будет таким:

library(readr)

library(dplyr)

ta <- readr::read_csv("table.csv")

ta %>% group_by(type, rep, category) %>%
  summarise(file = paste0(filename, collapse="+"))


# # A tibble: 7 x 4
# # Groups: type, rep [?]
#    type   rep category file             
#   <int> <int> <chr>    <chr>            
# 1     1     1 B        file11           
# 2     1     1 C        file4+file5      
# 3     1     4 A        file1+file10     
# 4     2     1 A        file3            
# 5     2     2 D        file6            
# 6     3     1 B        file2+file8+file9
# 7     3     1 C        file7
...