根据R

时间:2019-02-11 16:13:17

标签: r

我想从现有数据创建一个表。我在数据中有5个品种和3个聚类。在期望的表中,我想显示带有相应簇的品种的编号和名称。但是我做不到。这是我的数据

variety<-c("a","b","c","d","e")
cluster<-c(1,2,2,3,1)
x <- cbind(variety, cluster)
data <- data.frame(x)
data

    variety cluster
1       a       1
2       b       2
3       c       2
4       d       3
5       e       1

我想要的表是这样的。

cluster    number   variety name

1            2       a, e
2            2       b,c
3            1       d

如果有人帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

以下内容可以提供您想要的结果:

library(plyr)
variety<-c("a","b","c","d","e")
cluster<-c(1,2,2,3,1)
x <- cbind(variety, cluster)
data <- data.frame(x)
data

ddply(data,.(cluster),summarise,n=length(variety),group=paste(variety,collapse=','))

答案 1 :(得分:1)

这是tidyverse的一个选项。按“群集”分组,将行数(n())和paste的“变量”分成单个字符串(toString

library(tidyverse)
data %>%
  group_by(cluster) %>% 
  summarise(number = n(), variety_name = toString(variety))