R-如何将多个矩阵行凝结成每个因素的一个,然后将其写入TSV文件

  • 本文关键字:一个 然后 文件 TSV r formatting
  • 更新时间 :
  • 英文 :


我的输出以以下格式:

类型名称因子1因子2
1 A 34 4 5
2 A 34 3 7
3 A 22 1 3
4 A 21 3 4
5 A 21 3 5

这是获取输出的代码:

data<-as.data.frame(rbind(c("a",34,4,5), c("a", 34, 3, 7), c("a", 22, 1, 3), c("a", 21,3,4), c("a", 21,3,5)))
names(data)<-c("type", "name", "factor1", "factor2")

我希望将上面的输出转换为每个"名称"列只有一个行的输出。这种新格式必须写入将在另一个函数(由Python(中使用的TSV文件。

类型名称因子1因子2
1 A 34 4,3 5,7
3 A 22 1 3
4 A 21 3 4,5

对不起,我不知道如何获得每行清晰显示的空间。例如,第1行在" factor1"列下的" 4,3"和factor2列下的" 5,7"。希望这可以帮助。

预先感谢您。

我们可以做

library(tidyverse)
data %>%
    group_by(type, name) %>% 
    summarise_all(funs(toString(sort(unique(.)))))

,而不是使用summarise_all在变量上应用多个功能,我们还可以定义自定义功能并将其传递给summarise。请注意,当您想对变量进行复杂的操作时,这很有用。

library(dplyr)
func <- function(value){
  return(paste(unique(value), collapse = ','))
}
data %>% 
  group_by(type, name) %>%
  summarise(factor1 = func(factor1), factor2 = func(factor2))
# or use summarise_each in new dplyr verion
data %>% 
  group_by(type, name) %>%
  summarise_each(funs(func))

这是输出:

# A tibble: 3 x 4
# Groups:   type [?]
    type   name factor1 factor2
  <fctr> <fctr>   <chr>   <chr>
1      a     21       3     4,5
2      a     22       1       3
3      a     34     4,3     5,7

最新更新